1

我目前正在尝试使用 MechanicalSoup 登录亚马逊。我可以打开登录页面,但它告诉我需要启用 Cookie 才能继续。但是由于 MechanicalSoup 文档声明它会自动存储和发送 cookie,我不知道问题出在哪里。

这是我当前的代码:

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&currentPageURL=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()

亚马逊输出

4

2 回答 2

0

我尝试了您的代码的变体,但它也不起作用:

>>> 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)

亚马逊似乎尽最大努力阻止机器人,如果是这样,您不应该尝试编写机器人(您必须伪造用户代理才能访问该网站这一事实很好地表明您做错了什么) .

解决方案:不要为亚马逊编写机器人 :-(。

于 2017-10-18T06:51:41.143 回答
0

Cookie 是根据域名存储的。除非域名相同,否则一个应用程序(网站)不能为另一个应用程序(网站)保存 cookie。

在您的示例中,您的应用程序正在为 Amazon 的域启动 Web 浏览器。您不能为亚马逊的域保存 cookie。

解决方案:在浏览器中启用 cookie。这是亚马逊的要求。

于 2017-10-01T19:56:17.127 回答