我有这个脚本:
import requests
from bs4 import BeautifulSoup
with requests.Session() as c:
body = {'username':'*****','password':'*********','submit':'Log In','mod':'www','ssl':'0','dest':'community'}
con = c.post('https://secure.runescape.com/m=weblogin/login.ws', data=body)
a = (con.cookies['session'])
cookies = dict(session=a)
b = c.get('https://www.runescape.com/c=Xbn439ejpJo/account_settings.ws?jptg=ia&jptv=navbar',cookies=cookies)
通过第一个链接,我设法登录。当我尝试到达第二页时,我没有登录...为什么? print(b.text)
答案 0 :(得分:2)
这取决于网站的登录令牌。 Runescape是一款受欢迎的游戏,所以他们可能会采用几种防止刮擦的方法,就像你想要做的那样。
除此之外,登录使用的常规方法是使用会话ID - 在每个请求的标头中发送。你已经为此添加了cookie - 所以这似乎不是问题。
您可以调试此方法的方法是打开浏览器并使用调试工具查看它发送的原始请求(chrome和firefox有一个)。并且模仿你在那里看到的请求我是python。
最好将“origin”标题设置为Chrome或类似内容,以便Runescape不会自动检测到它正在被抓取。
注意:请务必检查ROBOT.txt,并在执行此操作时不要违反其政策。如果你这样做,他们可以很容易地禁止你的IP和帐户。