我目前正在尝试使用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¤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()
答案 0 :(得分:0)
根据域名存储Cookie。除非域名相同,否则一个应用程序(网站)无法为其他应用程序(网站)保存cookie。
在您的示例中,您的应用程序正在为Amazon的域启动Web浏览器。您无法为亚马逊域保存Cookie。
解决方案:在浏览器中启用Cookie。这是亚马逊的要求。
答案 1 :(得分: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)
似乎亚马逊尽力阻止僵尸程序,如果是这样你就不应该尝试编写僵尸程序(事实上你必须伪造用户代理来访问该网站这是一个很好的指标,你正在做出错了。)
解决方案:不要为亚马逊写机器人: - (。