如何从公司内部网抓取数据?



>背景:对于我公司的任何内部网站,如果我不使用公司的网络,我需要使用 VPN 登录。要登录,我需要我的用户名和密码。 我要抓取的网页不仅需要我的用户名和密码,还需要额外的登录权限。

问题陈述:我已经获得了查看此网页的权限(我可以使用我的用户名和密码查看该网页(,但是我在下面尝试的代码仍然返回错误:

POST_LOGIN_URL = 'https://login.com'
REQUEST_URL = 'https://webpageIneedtoscrape.com'
payload = {
'username': 'user',
'pass': 'password'
}
with requests.Session() as session:
post = session.post(POST_LOGIN_URL, data=payload)
r = session.get(REQUEST_URL)
print(r.text)

这给了我

SSLError: HTTPSConnectionPool(host='https://webpageIneedtoscrape.com', port=443): Max retries exceeded with url:  (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

然后我尝试使用以下代码仅抓取内网网站的主页:

import requests
from requests_ntlm import HttpNtlmAuth
r = requests.get("https://login.com\username",auth=HttpNtlmAuth('username','password'))

它返回了此错误:

ProxyError: HTTPSConnectionPool(host='login.com%5cusername', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response')))

我很困惑我现在是否可以抓取内联网。我在网上搜索,看到一些关于证书的答案,但我不知道它是什么。 我是网络抓取的新手,我想知道这个问题是否可以自己解决,或者它需要额外的文件,比如证书?

我也感谢任何帮助我诊断问题的建议。

尝试将其添加到您的请求中:

r = session.get(REQUEST_URL, verify = False)

如错误所示,证书验证失败。或者,您可以尝试:

r = session.get('https://google.com', verify='/path/to/certfile')

参考 - https://2.python-requests.org/en/master/user/advanced/#ssl-cert-verification

最新更新