onebee 发表于 2019-8-31 15:09

WinHttp.WinHttpRequest.5.1采集https网页提示"证书作者无效或不正确"


url="https://www.zgzjzj.com/" '此网站很特别,必须添加证书才能采集
set Http=server.createobject("WinHttp.WinHttpRequest.5.1")
Http.SetClientCertificate ("LOCAL_MACHINE/AddressBook/*.zgzjzj.com") '此句无论怎么修改都起不了作用
Http.Option(6)=0
'Http.Option(4) = 13056 '如果加了此条“忽略错误”,虽能采集,但得到的网页却是“405 Not Allowed”
Http.open "GET",url,false
Http.setRequestHeader "cookie",cookie1
Http.setRequestHeader "Referer",url
Http.send

以上这段代码是用asp网页语言(vbscript)实现,javascript等其它编程语言只要采集此网页也会碰到一样的问题。
碰到了一个网页,使用server.createobject("WinHttp.WinHttpRequest.5.1")或者Server.CreateObject("MSXML2.ServerXMLHTTP.5.0")之类的组件都无法获取网站源文件,均提示:
WinHttp.WinHttpRequest 错误 '80072f0d'
证书作者无效或不正确
若加上Http.Option(4) = 13056这句(忽略错误,照常提交),虽然能提交内容,但返回的却是“405 Not Allowed”,显然是因为没有发送证书,导致无法通过验证。

应该怎么修改才能正确采集到此网站的源文件呢?烦请高手测试后给出修改办法!谢谢!

凯咪 发表于 2019-8-31 15:45

python爬取https的话,可以用模拟浏览器访问的方式,比如selenium库+Chrome/PhantomJS去爬取数据(selenium库主要用来解决JS渲染的问题)
不用python的话 可以用fiddler,option里边勾选https 即可

testpassword 发表于 2019-8-31 16:11

忽略证书验证就可以了,我测试用 winhttp api 可以正常访问。

onebee 发表于 2019-8-31 21:06

testpassword 发表于 2019-8-31 16:11
忽略证书验证就可以了,我测试用 winhttp api 可以正常访问。

忽略证书验证返回的是“405 Not Allowed”,显然不发送证书,无法通过验证。
http://r588.cn/t.jpg
页: [1]
查看完整版本: WinHttp.WinHttpRequest.5.1采集https网页提示"证书作者无效或不正确"