我在公司工作,希望让我的脚本连接到我的团队的内部页面并从中提取数据,我的脚本可以连接到我们的外部页面,但是内部任何内容都会返回一个身份验证错误,尽管这些相同的证书正在被我的浏览器使用
我用什么来收集证书:
certfile = wincertstore.CertFile()
certfile.addstore("CA")
certfile.addstore("ROOT")
atexit.register(certfile.close)
#when looking at which certs are added, I see the ones I need to use are being pulled
如何定义和包装套接字:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s,ca_certs=certfile.name, cert_reqs=ssl.CERT_REQUIRED)
连接方法:
def get_site(site):
response = urllib2.urlopen(site)
get_site.html = response.read()
return get_site.html
因为我在Windows上,我使用的是wincertstore - 但除此之外我想要解决这个问题,而不必为了便携性而下载其他模块。
尝试连接到内部网站时,收到此错误:
File "C:\Python27\lib\urllib2.py", line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: Unauthorized
我的两个问题是:1)这是否会在服务器端失效,或者这可能是在客户端?(或者是那种情境?)2)如果这是在我的结束,在内部网页上成功连接,我缺少什么?
我已经阅读了wincertstore,ssl,socket和urllib2文档,但找不到任何引用此场景或其他问题的人与同一场景中的人,只有一些模糊相关的问题,但最终在我的情况下。