找回密码
 加入
搜索
查看: 9181|回复: 22

[网络通信] [已解决]请教一下winhttp发送get请求时候怎么提交cookie

 火.. [复制链接]
发表于 2016-9-5 09:55:01 | 显示全部楼层 |阅读模式
本帖最后由 cxlater 于 2016-9-7 23:13 编辑


$url = "http://pub.alimama.com/pubauc/getCommonCampaignByItemId.json?itemId=528423266110"
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("get",$url,false)
$oHTTP.setRequestHeader("Cookie", $iecookies)
$oHTTP.Send()
$dxjson = $oHTTP.responseText
ConsoleWrite(BinaryToString($dxjson ,4))

代码中请求的url需要登录信息,$iecookies是从另外一个程序创建的ie embeded对象里通过document.cookie读取到的(该对象里的页面已经处于登录状态),想通过winhttp提交cookie保持登录的,但是这样提交之后没有得到预期的json文本

是哪里的问题呢

获取到的cookie为:
_tb_token_=mwm39pnzlrp; v=0; cookie32=1cbr7f1fd567a76a647fb5588a4eb11c; cookie31=NzAzMzY4OTIsJUU2JTg4JTkxJUU2JTgzJUIzJUU2JTg4hTkxJUU2JTk4JUFGJUU2JUI1JUI3MTIzMjEsd2FuZ2hhbzg0ODRAMTYzLmNvbSxUQg%3D%3D; login=VT5L2mSpMGV7TQ%3D%3D; tlut=UoWwJ0ueyt39AA%3D%3D; t=8d7b2e15c953f92149b8f8fb82f88ee1; cna=zJBKEHX45BsCATFX2JlW60Hj; l=AvHxrgRy0j7TduSW97mKJJftQXOL3mVQ; isg=Alpa8V4G2ZlQOFU1UwbqYPV9rQD3Vt5lTQ3mBmTTBu241_oRTBsudSCl8Rs0
发表于 2016-9-5 10:11:32 | 显示全部楼层
有返回什么信息么?我这边打不开这个网站
Content-Type
true false 都改看看。
发表于 2016-9-5 10:13:24 | 显示全部楼层
WinHttp.WinHttpRequest.5.1
不是自动继承Cookies吗
发表于 2016-9-5 10:28:24 | 显示全部楼层
有时候很想学懂这个WINHTTP的,感觉公司打卡什么的都可以脚本完成,而不需要登陆后在操作。
 楼主| 发表于 2016-9-5 10:44:10 | 显示全部楼层
非常感谢楼上几位的回复,现在是找到问题的原因了.
使用已经登录的ie对象 通过document.cookie 获取到cookies ,提交之后返回的是登录页面,也就是cookie无效,登录不成功

后来我尝试用fiddler抓包浏览器(通过访问同一个页面抓包的数据),获取到的cookie文本长度要比之前的长很多,用这个提交是可以获取到预期返回值的。

新问题来了,难道document.cookie获取不到完整的cookies?怎么才能通过这个方法获取呢,程序需要自动化完成,不可能去每次抓包的
两次获取到的cookies分别如下

ie对象
t=8d7b3e15c953149b8f8fb82f88ee1; cna=zJBKEHX41BATFX2JlW60Hj; l=AhAQzVoG781WWVDt5bFzeloFBi2fQj; isg=AqOjli5q8Ea4zLxynUJPGhNOfGRTfabC7PAdUA_4J5FMM2XWjHKoHGWFzl; _tb_token_=2Et3vPzcmrp; v=0; cookie32=1cbd7f1fd567a76a647fb5588a4eb11c; cookie31=NzAzMzY4OTIsJUU2JTg4JTkxJUU2JTgzJUIUU2JTg4JTkxJUU2JTk4JUFGJUU2JUI1JUI3MTIzMjEsd2FuZ2hhbzg0ODRAMTYzLmNvbSxUQg%3D%3D; login=V32FPkk%2Fw0vg%3D%3D; tlut=UoWwJ0ueyEWuVQ%3D%3D
fiddler抓包
cookie2=233027282fefdd0dcee79e3d3596d2b; t=f1a8d0bf6053c6235cdf1d6f59b8bdf; cna=MgBMEGxM71ICATFSYZasZwMW; v=0; _tb_token_=Ece2jUg3Wrp; tlut=UoWwrJFFjgc%2Bg%3D%3D; taokeIsBoutiqueSeller=eQ%3D%3D; taokeisb2c=; cookie32=1cbd7f1fd67a76a647fb5588a4eb11c; cookie31=NzAzMzY4OTIsJUU2JTg4JTkxJUU2JTgzJUIzJUU2JTg4kxJUU2JTk4JUFGJUU2JUI1JUI3MTIzMjEsd2FuZ2hhbzg0ODRAMTYzLmNvbSxUQg%3D%3D; alimamapwag=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ1LjAuMjQ1NC4xMDEgU2FmYXJpLzUzNy4zNg%3D%3D; login=URm48syIIrSKA%3D%3D; alimamapw=HHB9RiBXFXoHCAmE3MgE3NWHHB5RidSFXsjHCRXBwJWBAZtCZcV1IEBw5S1BTDwIGUAcHCgQL%0AUAZUBwgEDVQAU1I%3D; l=Ary82arxjVnE8zvYdRCv2-lDFRlRmDQ; isg=AsnJJMeR-rRPTobGODU3s9R2PUutL1IuMHS4Ws1trDgsuTEsmalGWKqgpvi
发表于 2016-9-5 11:42:34 | 显示全部楼层
回复 4# heroxianf


    打卡不是直接用卡刷的么
发表于 2016-9-5 11:45:34 | 显示全部楼层
document.cookie  可能只是一部分的cookie
用下面的将所有头抓出来看看。
$oHTTP.GetAllResponseHeaders()
 楼主| 发表于 2016-9-5 12:23:42 | 显示全部楼层
回复 7# 1361739590

我需要的是从ie对象里获取到cookie给winhttp使用啊
cookies必须要从浏览器里取出来的
发表于 2016-9-5 12:56:28 | 显示全部楼层
回复 8# cxlater


    你获取cookies代码是什么?
发表于 2016-9-5 13:48:09 | 显示全部楼层
回复 6# 1361739590


    能卡刷就好了,网页上还要点一下打卡。
发表于 2016-9-5 13:48:38 | 显示全部楼层
回复 8# cxlater


    如果成功了,希望分享完整代码来  学习一下。
 楼主| 发表于 2016-9-5 14:00:55 | 显示全部楼层
回复 9# 1361739590

从ie对象获取cookie?

$oIE = _IECreate("http://www.baidu.com")
$cookie = $oIE.document.cookie        


但是这个cookies 是不完整的
发表于 2016-9-5 14:04:21 | 显示全部楼层
回复 10# heroxianf


    点一下不用人 都可能好做,刷卡还要扫脸。
发表于 2016-9-5 14:05:30 | 显示全部楼层
回复 13# 1361739590

刷脸我这里还没这么高科技哦。
发表于 2016-9-5 14:06:25 | 显示全部楼层
回复 12# cxlater


    你的意思是IE已经登入好了,只是抓一下cookies用。
抓的是哪个网页,我这边看看能不能试试。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 21:40 , Processed in 0.107369 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表