高手帮我看一下, SOHU 的POST ,批量检测账号是否存在!
本帖最后由 qq123123 于 2010-10-20 04:59 编辑首先说明一点,我自己有努力看了一天的帮助了,一个一个的看完了,自己也做了一个,修改了一下,但是也不行,只有求助各位!
所有的钱求购一个 SOHU 的POST ,批量检测账号是否存在
只要求判断这个账号是否存在,就行了, 是不需要注册出来的(批量)
https://passport.sohu.com/web/dispatchAction.action?registerType=Passport&appid=8888
在线等待
POST数据
GET /jsonajax/checkusername.action?shortname=asdf12323&domain=sohu.com&appid=1000&_t=1167907764531&mobileReg=false HTTP/1.1
Accept: text/javascript, text/html, application/xml, text/xml, */*
Accept-Language: zh-cn
x-prototype-version: 1.6.0
Referer: https://passport.sohu.com/web/di ... /signup_success.jsp
x-requested-with: XMLHttpRequest
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: passport.sohu.com
Connection: Keep-Alive
Cookie: IPLOC=CN4690; SUV=1010131719140292; PPUV=1167902388062885; JSESSIONID=abcdwRoWnRgkHeNC3mLUs 本帖最后由 republican 于 2010-10-13 22:24 编辑
这个应该没什么难度的吧,根本不需要Cookies;
如果满意的话,钱还是给有需要的人吧~
需要用到的UDF,传送门:http://www.autoitx.com/thread-18528-1-1.html
#include <WinHttp_GetRespond.au3>
$MyOpen=_WinHttpOpen()
$Test = InputBox("请输入用户名","请输入用户民")
$rContext=_WinHTTP_GetRespond($MyOpen,"https://passport.sohu.com/jsonajax/checkusername.action?shortname="&$Test&"&domain=sohu.com&appid=8888&_t=1286978861640&mobileReg=false",0,2)
If Not @error Then
Switch StringRegExpReplace(BinaryToString($rContext),'.*"status":"(\d+)".*','$1')
Case 0
MsgBox(64,"恭喜","该用户名并未被使用~")
Case 1
MsgBox(48,"抱歉","该用户名已经被使用!")
EndSwitch
EndIf
_WinHttpCloseHandle($MyOpen)
打包下载:
本帖最后由 qq123123 于 2010-10-14 01:54 编辑
回复 2# republican
首先谢谢你的回复,但是还是有问题的
运行 EXE以后,没有反应!并且发现用工具查看,
发现地址会变!
然后AU3 运行,又提示错误, WinHttp_GetRespond.au3利用传送门,他说变量没有定义!麻烦请发完整的代码,让我学习一下,谢谢
D:\autoit3\Include\WinHttp_GetRespond.au3 (1) : ==> ?????.:
?:
^ ERROR
$MyOpen,"https://passport.sohu.com/jsonajax/checkusername.action?shortname="&$Test&"&domain=sohu.com&appid=8888&_t=1286978861640&mobileReg=false",0,2)
上面是你写的,但是我一查,发现地址又变了
https://passport.sohu.com/jsonajax/checkusername.action?shortname=asdfasdf&domain=sohu.com&appid=1000&_t=1167902521468&mobileReg=false 本帖最后由 qq123123 于 2010-10-20 05:00 编辑
我测试下! 是_WinHTTP_GetRespond,要么你就修改UDF.
地址变不变不影响的,把延时调高点就好了。 回复 5# republican
延时调高点?
能给个列子,或者完整一点的代码,小弟新人,看起来挺辛苦! 回复 6# qq123123
我给你的就是完整的代码了。
_WinHTTP_GetRespond($hRequest, $ConnectURL [, $SendMode[,$ReturnMode[,$hTimeOut[,$NORedirect[,$Context[,$Cookies[,$MoreHeader[,$FuncName[,$ParamArray]]]]]]])
;~ $hTimeOut - 超时 (正整数)
注意到timeout没有?这个就是超时设置。
即:$rContext=_WinHTTP_GetRespond($MyOpen,"https://passport.sohu.com/jsonajax/checkusername.action?shortname="&$Test&"&domain=sohu.com&appid=8888&_t=1286978861640&mobileReg=false",0,2,55000)延时55秒。 本帖最后由 republican 于 2010-10-14 20:40 编辑
发重复了....
延时啊.... 呵呵,学习一下。。 回复 7# republican
你用的是什么版本的 AU3
我的版本找不到 _WinHttpOpen() 这个函数 。。。。
2楼都给你传送门了 下一个别人写好的函数就可以了
PS 多看看基础教程吧 来学习一下,感谢2楼 还是要感谢一下2楼,不过问题确实没有解决,不知道是不是版本的问题! 回复 2# republican
难道是我用IE6 的问题,https://
我连你的 EXE文件都没办法用,打开了,没有什么提示 本帖最后由 republican 于 2010-10-20 08:04 编辑
回复 14# qq123123
不明白你是怎么搭建编译环境?
与IE6无关,只要是Winhttp 5.1以上版本即支持。
使用以下代码试试吧:#include <WinHttp_GetRespond.au3>
#include <array.au3>
$MyOpen=_WinHttpOpen()
$Test = InputBox("请输入用户名","请输入用户民")
$rContext=_WinHTTP_GetRespond($MyOpen,"https://passport.sohu.com/jsonajax/checkusername.action?shortname="&$Test&"&domain=sohu.com&appid=8888&_t=1286978861640&mobileReg=false",0,2)
$rContext=BinaryToString($rContext)
_ArrayDisplay($rContext)
MsgBox(0,"文件内容",$rContext)
Switch StringRegExpReplace(BinaryToString($rContext),'.*"status":"(\d+)".*','$1')
Case 0
MsgBox(64,"恭喜","该用户名并未被使用~")
Case 1
MsgBox(48,"抱歉","该用户名已经被使用!")
EndSwitch
_WinHttpCloseHandle($MyOpen)
页:
[1]
2