qq123123 发表于 2010-10-13 20:17:45

高手帮我看一下, 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:20:58

本帖最后由 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:37:56

本帖最后由 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-14 01:56:13

本帖最后由 qq123123 于 2010-10-20 05:00 编辑

我测试下!

republican 发表于 2010-10-14 08:10:49

是_WinHTTP_GetRespond,要么你就修改UDF.

地址变不变不影响的,把延时调高点就好了。

qq123123 发表于 2010-10-14 12:24:39

回复 5# republican
延时调高点?

能给个列子,或者完整一点的代码,小弟新人,看起来挺辛苦!

republican 发表于 2010-10-14 20:37:05

回复 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:38:54

本帖最后由 republican 于 2010-10-14 20:40 编辑

发重复了....

延时啊....

menfan1 发表于 2010-10-14 20:42:40

呵呵,学习一下。。

qq123123 发表于 2010-10-15 19:02:00

回复 7# republican


你用的是什么版本的 AU3

我的版本找不到    _WinHttpOpen()   这个函数

shano 发表于 2010-10-15 20:19:02

。。。。
2楼都给你传送门了   下一个别人写好的函数就可以了
PS 多看看基础教程吧

qqmmcc 发表于 2010-10-15 22:22:09

来学习一下,感谢2楼

qq123123 发表于 2010-10-20 04:18:33

还是要感谢一下2楼,不过问题确实没有解决,不知道是不是版本的问题!

qq123123 发表于 2010-10-20 05:01:22

回复 2# republican


难道是我用IE6 的问题,https://

我连你的 EXE文件都没办法用,打开了,没有什么提示

republican 发表于 2010-10-20 08:03:27

本帖最后由 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
查看完整版本: 高手帮我看一下, SOHU 的POST ,批量检测账号是否存在!