0

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

基本上,机器人登录在游戏中买卖股票,当我输入我的用户名并通过时,它可以工作,但是当我输入不同的用户名时,我收到一个错误,说我是从错误的页面定向的,即使我使用了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 输出中收到错误

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

有人请帮助已经为此工作了几个小时!

谢谢你!

更新

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

4

1 回答 1

0

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

于 2013-07-31T06:34:29.270 回答