javascript - 如何使用 requests_html 忽略无效的 SSL 证书?

标签 javascript python ssl web-scraping python-requests

所以基本上我是想从网站上删除 javascript 生成的数据。为此,我使用了 Python 库 requests_html .

这是我的代码:

from requests_html import HTMLSession
session = HTMLSession()

url = 'https://myurl'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
payload = {'mylog': 'root', 'mypass': 'root'}

r = session.post(url, headers=headers, verify=False, data=payload)
r.html.render()
load = r.html.find('#load_span', first=True)

print (load.text)  

如果我不使用 render() 函数,我可以连接到网站并且我的抓取数据为空(这是正常的)但是当我使用它时,我有这个错误:

pyppeteer.errors.PageError: net::ERR_CERT_COMMON_NAME_INVALID at https://myurl

net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM

我假设渲染器忽略了 session.post 的参数“verify=False”。我该怎么做?

编辑:如果你想重现错误:

from requests_html import HTMLSession
import requests

session = HTMLSession()

url = 'https://wrong.host.badssl.com'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

r = session.post(url, headers=headers, verify=False)

r.html.render()

load = r.html.find('#content', first=True)

print (load)

最佳答案

唯一的方法是在 pyppeteer 中设置 ignoreHTTPSErrors 参数.问题是 requests_html 没有提供任何方法来设置这个参数,事实上,有一个 issue关于它。我的建议是通过在此处添加另一条消息再次通知开发人员。

或者您可以拉取这个新功能。

另一种方法是使用 Selenium。

编辑:
我将 verify=False 添加为带有拉取请求(已接受)的功能。现在可以忽略 SSL 错误 :)

它不是 Get() 的参数 set it when you instantiate the object :

session = HTMLSession(verify=False)

关于javascript - 如何使用 requests_html 忽略无效的 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51762655/

相关文章:

javascript - 在同一行中多次匹配字符串模式

java - 我怎样才能把这个javascript函数转换成java

python - 有没有一种方法可以让我们在不使用热编码器的情况下训练 RNN?

java - 在反向代理后面访问 ElastiC

c# - 如何判断服务器是否有ssl证书

javascript - 在 jQuery 中获取链接的原始值并更新

javascript - 全日历事件开始时间

java getBytes() 在 python 中等效

python - 复制由 pandas.DataFrame 组成的复合对象时出错

java - 连接 MySQL 数据库时有关 SSL 连接的警告