[已解决]请教一下winhttp发送get请求时候怎么提交cookie
本帖最后由 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
有返回什么信息么?我这边打不开这个网站
Content-Type
true false 都改看看。 WinHttp.WinHttpRequest.5.1
不是自动继承Cookies吗 有时候很想学懂这个WINHTTP的,感觉公司打卡什么的都可以脚本完成,而不需要登陆后在操作。 非常感谢楼上几位的回复,现在是找到问题的原因了.
使用已经登录的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
回复 4# heroxianf
打卡不是直接用卡刷的么{:face (394):} document.cookie可能只是一部分的cookie
用下面的将所有头抓出来看看。
$oHTTP.GetAllResponseHeaders() 回复 7# 1361739590
我需要的是从ie对象里获取到cookie给winhttp使用啊
cookies必须要从浏览器里取出来的 回复 8# cxlater
你获取cookies代码是什么? 回复 6# 1361739590
能卡刷就好了,网页上还要点一下打卡。{:face (197):} 回复 8# cxlater
如果成功了,希望分享完整代码来学习一下。 回复 9# 1361739590
从ie对象获取cookie?
$oIE = _IECreate("http://www.baidu.com")
$cookie = $oIE.document.cookie
但是这个cookies 是不完整的 回复 10# heroxianf
点一下不用人 都可能好做,刷卡还要扫脸。 回复 13# 1361739590
刷脸我这里还没这么高科技哦。 回复 12# cxlater
你的意思是IE已经登入好了,只是抓一下cookies用。
抓的是哪个网页,我这边看看能不能试试。
页:
[1]
2