为什么mechanize会抛出htp403错误?

2024-05-16 07:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

出于某种原因,当我尝试打开页面时,会得到一个HTTP Error 403: Forbidden。我曾经遇到过一个robots.txt错误,但这个问题已经解决了。另外,我甚至找不到robots.txt文件。

我仍然可以从chrome查看网页,所以我想知道的是:即使设置了适当的标题,mechanize看起来是否与chrome不同?

这是我的代码(不起作用):

br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]   

我还尝试将addheaders设置为与浏览器相同的头(找到了here):

br.addheaders = [('User-agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36')]

。。。但那也没用。

最后,我尝试使用Selenium,这很有效,因为它在chrome中加载页面,然后与Python通信。不过,我还是想让它和机械化一起工作。另外,我仍然不确定chrome和mechanize与他们的服务器有什么不同。


Tags: brtxttruemozilla页面chromeagentgecko
1条回答
网友
1楼 · 发布于 2024-05-16 07:19:02

诀窍可能在selenium发送的请求头中,除了用户代理头之外,一些服务器还检查其他头,以确保真正的浏览器与它们对话。看看我以前的一个答案:

urllib2.HTTPError: HTTP Error 403: Forbidden

在你的位置,我会尝试添加所有的标题,你真正的chrome浏览器发送,然后消除不必要的。

相关问题 更多 >