账号:18434360249 密码:gqr6851826 来测试,谢谢了
代码如下
Code: Select all
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#SingleInstance force
#NoEnv
#Include <HTTPRequest>
Gui Add, ListView, vlistview x18 y54 w226 h608, a|b|c
Gui Add, ActiveX, x+5 y53 w900 h640 vWB, Shell.Explorer ;最后一个参数是ActiveX组件的名称.
Gui Add, Button, x77 y9 w75 h23, 开始
Gui Add, Button, x191 y8 w75 h23, 暂停
Gui Show, , Window
加载网页:
Gui submit,NoHide
;~ url_group := "http://qun.qzone.qq.com/"
url_group := "http://bq.qbao.com/portle/my.html"
wb.Silent := True ; 这一句可以避免一些网页弹出脚本错误
wb.Navigate(url_group)
wb.visible :=true ;浏览器窗口可见
Sleep, 1000
Loop { ;等待网页加载完成!
Sleep,200
if (wb.ReadyState="complete" or wb.ReadyState=4 or A_LastError!=0)
break
} ;****************************************************************
Sleep 300
Loop{ ;简单的方法来判断是否登录成功
Sleep 100
}
until (wb.document.getElementById("ut88").outerText = "所有记录") ;根据是否出现“所有记录”这个网页元素来判断是否登录成功
gosub GetGroupList
return
GetGroupList: ;post获取数据
url =
(LTrim Join&
http://bq.qbao.com/flow/query.html
)
Sleep, 1000
while !HttpRequest(url, InOutData, out_h := Headers()) ;InOutData获取到的数据
Sleep, 1000
MsgBox %InOutData%
Clipboard:=InOutData
FileAppend,%InOutData%,分享数据json.txt
if !RegExMatch(InOutData, "\{.*\}", json_GroupList)
{
TrayTip, 正在获取数据, 正在获取数据, 3
goto, GetGroupList
}
jGroup := JSON_parse(json_GroupList).data ;群列表的json数据
Loop, % jGroup.total ;总共的群数量
{
GroupId := jGroup["rows", A_Index, "createTime"] ;分享时间
GroupName := jGroup["rows", A_Index, "couponAmount"] ;所得宝券数量
LV_Add("", GroupName, GroupId)
FileAppend,%GroupName%`t`t%GroupId%`n,分享数据处理过的数据.txt
}
return
Button暂停:
Pause
return
JSON_parse(jsonStr) {
SC := ComObjCreate("ScriptControl")
SC.Language := "JScript"
;ComObjError(false)
jsCode =
(
function arrangeForAhkTraversing(obj) {
if(obj instanceof Array) {
for(var i=0 ; i<obj.length ; ++i)
obj[i] = arrangeForAhkTraversing(obj[i]) ;
return ['array',obj] ;
} else if(obj instanceof Object) {
var keys = [], values = [] ;
for(var key in obj) {
keys.push(key) ;
values.push(arrangeForAhkTraversing(obj[key])) ;
}
return ['object',[keys,values]] ;
} else
return [typeof obj,obj] ;
}
)
SC.ExecuteStatement(jsCode "; obj=" jsonStr)
return convertJScriptObj2AHK(SC.Eval("arrangeForAhkTraversing(obj)"))
}
Headers(referer = "")
{
global userAgent
if !userAgent
userAgent := "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"
;~ Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Headers =
( LTRIM
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:12
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:bq.qbao.com
Origin:http://bq.qbao.com
Referer:http://bq.qbao.com/portle/my.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
X-Requested-With:XMLHttpRequest
)
return Headers
}
convertJScriptObj2AHK(jsObj) {
if (jsObj[0]="object") {
obj := {}, keys := jsObj[1][0], values := jsObj[1][1]
Loop % keys.length
obj[keys[A_Index-1]] := convertJScriptObj2AHK(values[A_Index-1])
return obj
} else if (jsObj[0]="array") {
array := []
Loop % jsObj[1].length
array.Insert(convertJScriptObj2AHK(jsObj[1][A_Index-1]))
return array
} else return jsObj[1]
}
URLDownloadToVar(url, Encoding = "",Method="GET",postData=""){ ;网址,编码,请求方式,post数据
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
if Method = GET
{
Try
{
hObject.Open("GET",url)
hObject.Send()
}
catch e
return -1
}
else if Method = POST
{
Try
{
hObject.Open("POST",url,False)
hObject.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
hObject.Send(postData)
}
catch e
return -1
}
if (Encoding && hObject.ResponseBody)
{
oADO := ComObjCreate("adodb.stream")
oADO.Type := 1
oADO.Mode := 3
oADO.Open()
oADO.Write(hObject.ResponseBody)
oADO.Position := 0
oADO.Type := 2
oADO.Charset := Encoding
return oADO.ReadText(), oADO.Close()
}
return hObject.ResponseText
}