0

我想使用 pythons requests模块抓取 Heritrix 主页。当我尝试在 chrome 上打开此页面时,出现错误:

This server could not prove that it is 10.100.121.41; its security  
certificate is not trusted by your computer's operating system. This   
may be caused by a misconfiguration or an attacker intercepting your    
connection.

但我可以进入页面。当我尝试使用requests抓取同一页面时,出现 SSL 错误,经过一番挖掘,我使用了 SO questionr=requests.get(url,auth=(username, password),verify=False中的以下代码:那是给我以下警告/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html,并返回 401 状态码。如何解决这个问题?

4

1 回答 1

1

401 表示您需要进行身份验证,但您使用了错误的方法。请求内置的另一种非常常见的身份验证方法是摘要式身份验证。您可以通过查看以下内容来确定它是否要使用摘要式身份验证:

r.headers.get('www-authenticate')

它应该有digest。(如果没有,则不需要摘要式身份验证。)您可以在请求中使用摘要式身份验证,如下所示:

from requests import auth

r = requests.get(url, auth=auth.HTTPDigestAuth(username, password), verify=False)

您看到的警告与 401 无关,它只是警告您发出的请求是对 HTTPS 站点的请求,并且您的连接可能会被攻击者有效地进行中间人攻击。如果要使其静音,可以执行以下操作:

from requests.packages import urllib3
urllib3.disable_warnings()
于 2015-02-21T15:48:36.930 回答