我目前正在尝试使用MechanicalSoup登录亚马逊。我可以打开登录页面,但它告诉我需要启用Cookie才能继续。但是,由于MechanicalSoup文档声明它将自动存储和发送cookies,我对问题可能出在哪里感到困惑。
这是我当前的代码:
import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser(
soup_config={'features': 'lxml'}
)
browser.session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.2228.0 Safari/537.36'})
browser.open("https://www.amazon.de/gp/navigation/redirector.html/ref=sign-in-redirect?ie=UTF8&associationHandle=deflex¤tPageURL=https%3A%2F%2Fwww.amazon.de%2F%3Fref_%3Dnav_custrec_signin&pageType=Gateway&switchAccount=&yshURL=https%3A%2F%2Fwww.amazon.de%2Fgp%2Fyourstore%2Fhome%3Fie%3DUTF8%26ref_%3Dnav_custrec_signin")
browser.launch_browser()发布于 2017-10-02 03:56:17
Cookie根据域名进行存储。一个应用程序(网站)无法为另一个应用程序(网站)保存cookie,除非域名相同。
在您的示例中,您的应用程序正在启动Amazon域的web浏览器。您不能保存Amazon域的cookies。
解决方案:在浏览器中启用cookies。这是亚马逊的要求。
发布于 2017-10-18 14:51:41
我尝试了你的代码的一个变体,它也不能工作:
>>> browser = mechanicalsoup.StatefulBrowser(user_agent='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) C
hrome/61.0.2228.0 Safari/537.36')
>>> browser.open("https://www.amazon.com/")
<Response [200]>
>>> browser.follow_link("^/gp/navigation")
<Response [404]>(它确实找到了正确的链接,但在跟随它时得到了404 )
亚马逊似乎在尽最大努力阻止机器人,如果是这样的话,你就不应该尝试编写机器人(你必须伪造用户代理才能访问网站,这一事实很好地表明你做错了什么)。
解决方案:不要为amazon编写机器人:-(.
https://stackoverflow.com/questions/46512712
复制相似问题