Urllib请求仅适用于一个用户

时间:2013-07-31 06:24:20

标签: python http web urllib2

我写了一个网络机器人,我遇到了一个问题

基本上,当我输入我的用户名并通过时,机器人登录购买并销售其运行的游戏中的份额但是当我输入不同的时候我得到一个错误,说我已被指向错误的页面,即使我使用了Referer标题

这是我的登录代码:

def Login(self):
        while True:
            self.cookieJar = cookielib.LWPCookieJar()
            self.opener = urllib2.build_opener(
                urllib2.HTTPCookieProcessor(self.cookieJar),
                urllib2.HTTPRedirectHandler(),
                urllib2.HTTPHandler(debuglevel=0))

            self.opener.addheaders = [('User-agent', "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36")]


            forms = {"username": self.username,
                    "password": self.password
                    }

            data = urllib.urlencode(forms)
            req = urllib2.Request('http://www.example.com/login.phtml',data)
            res = self.opener.open(req)
            self.login_html =  res.read()

            if 'Welcome to Neopets!' in self.login_html:
                print 'Login Sucsessful!'

                break
            else:
                print 'Failed Login'
这里适用于这两个帐户的

是我的购买股票方法:

def Buy_Shares(self):
        self.opener.addheaders = [('Referer','http://example.com/stockmarket.phtml?type=buy')]
        site = self.opener.open('http://www.example.com/stockmarket.phtml?type=list&full=true')

        html = site.read()
        soup = BeautifulSoup(html)
        text_list = []
        stocks_list = []
        for i in soup.findAll('b'):
            text_list.append(i.get_text())

        start = text_list.index('Change')+1
        stop = text_list.index('Search :')

        for i in range(start,stop):
            stocks_list.append(text_list[i])

        stocks = [stocks_list[i:i+4] for i in range(0, len(stocks_list), 4)]
        for i in stocks:
            if i[2] == '17':
                stock_name = (i[0]).encode('utf-8')
                print stock_name
                break
            else:
                stock_name = None

        if stock_name != None:

            print "Buying"
            forms1 = {"ticker_symbol" : stock_name,
                     "amount_shares": "1000",
                     "type" : "buy",
                     "_ref_ck" : "587d56547765f577cfdaaa3a7ac8328c"
                    }
            data1 = urllib.urlencode(forms1)
            req1 = urllib2.Request('http://www.example.com/process_stockmarket.phtml?',data1)
            res1 = self.opener.open(req1)
            html = res1.read()
            print html

            if 'Portfolio' in html:
                print 'Sucsess'


        elif stock_name == None:
            print "No stock to buy"

        self.Sell_Shares()

就像我说程序适用于我的帐户然后当我尝试我的朋友帐户时我在HTML输出中出错

我无法弄清楚为什么它适用于一个而不是另一个我想的可能是因为我的浏览器记住了我的帐户但我不确定

有人请帮忙解决这个问题几个小时!

谢谢!

更新

所以我从我的浏览器中清除了所有保存的密码,现在它们都没有工作,所以我认为这是我保存了密码的事实,所以当我没有保存密码时为什么它不能正常工作?

1 个答案:

答案 0 :(得分:0)

Cookie不匹配或"_ref_ck" : "587d56547765f577cfdaaa3a7ac8328c"是用户特定值。