junziyeaicai 发表于 2019-11-20 10:48:25

ObjCreate("WinHttp.WinHttpRequest.5.1") 获取网页源代码,如何设定cookie

ObjCreate("WinHttp.WinHttpRequest.5.1") 获取网页源代码,如何设定cookie为IE浏览器?
网上抄的一段代码

$url = 'https://detail.1688.com'
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Option(4) = 13056 ;忽略错误标志
$oHTTP.Option(6) = True ;是否接收重定向地址信息
$oHTTP.SetTimeouts(30000, 30000, 30000, 30000)
$oHTTP.Open('GET', $url, True)
$oHTTP.Send()
$oHTTP.WaitForResponse()
$Respond = BinaryToString($oHTTP.ResponseBody, 1)


用来下载网页源代码的,但是1688网站要求登录才能显示正确的网页,登录代码我不会写,如果能指定cookie为IE浏览器所用的cookie的话,我就可以用IE浏览器登录有再运行这段代码,有会的网友吗?
或者ObjCreate("WinHttp.WinHttpRequest.5.1")怎么用账号密码登录网站?用_IECreate我会写,但是ObjCreate("WinHttp.WinHttpRequest.5.1")我是第一次用,这个速度极快,适合我批量抓取网页。

zch11230 发表于 2019-11-21 09:28:36

本帖最后由 zch11230 于 2019-11-21 09:39 编辑

$oHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
$oHTTP.setRequestHeader('Cookie', 'JSID=123456789')

WinHttp.WinHttpRequest.5.1可以这样设置协议头cookie user-agent都是协议头。都这样设置就可以了。


看错问题了
如果是要AU3继承IE的cookie,可以用抓包工具,把cookie抓下来,然后上面的方法,设置成同样的cookie就可以了

如果是要ie继承au3的cookie,取出cookie后设置到系统,论坛有设置cookie的代码,我之前还用过的。
GetResponseHeader取cookie,wininet.dllInternetSetCookie设置ie的cookie


轩辕小妖 发表于 2019-11-20 12:25:54

没法设置的,两个是完全不同的东西

junziyeaicai 发表于 2019-11-20 15:10:57

轩辕小妖 发表于 2019-11-20 12:25
没法设置的,两个是完全不同的东西

好的,谢谢,那我用IE吧。

轩辕小妖 发表于 2019-11-20 15:47:32

junziyeaicai 发表于 2019-11-20 15:10
好的,谢谢,那我用IE吧。

可以试试先用IE访问一次,然后读取cookies,然后再附加到WinHttp请求头中

junziyeaicai 发表于 2019-11-21 10:38:52

zch11230 发表于 2019-11-21 09:28
$oHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
$oHTTP. ...

好的,我研究研究,目前我的知识储备还没法执行你说的方法,我先网上查下资料,成功后再过来回复你。
页: [1]
查看完整版本: ObjCreate("WinHttp.WinHttpRequest.5.1") 获取网页源代码,如何设定cookie