579 lines
23 KiB
Plaintext
579 lines
23 KiB
Plaintext
.版本 2
|
||
.支持库 spec
|
||
|
||
.程序集 斗鱼登录EX
|
||
|
||
.子程序 登录加密, 文本型, 公开
|
||
.参数 参_str, 文本型
|
||
.局部变量 value, 文本型
|
||
.局部变量 v8, , , , <!!!>
|
||
|
||
??? () ' <!!!>
|
||
value = ??? () ' <!!!>
|
||
|
||
返回 (value)
|
||
|
||
.子程序 slide1, 逻辑型, , 注册滑块
|
||
.参数 geetest_challenge, 文本型, 参考
|
||
.参数 geetest_validate, 文本型, 参考
|
||
.参数 code_token, 文本型, 参考
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 局_代理IP, 文本型
|
||
.局部变量 retult, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 type, 文本型
|
||
|
||
.计次循环首 (10, )
|
||
.如果真 (工作中 = 假)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
局_代理IP = GetIP ()
|
||
retult = diaoyong (局_代理IP)
|
||
' 调试输出 (“注册滑块--> ”, retult)
|
||
zyjson.解析 (retult)
|
||
geetest_challenge = zyjson.取文本 (“geetest_challenge”)
|
||
geetest_validate = zyjson.取文本 (“geetest_validate”)
|
||
code_token = zyjson.取文本 (“token”)
|
||
' type = zyjson.取文本 (“type”)
|
||
.如果真 (geetest_challenge ≠ “” 且 geetest_validate ≠ “” 且 code_token ≠ “”)
|
||
返回 (真)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
返回 (假)
|
||
|
||
.子程序 slide2, 逻辑型, , 登录滑块
|
||
.参数 返回challenge, 文本型, 参考
|
||
.参数 返回validate, 文本型, 参考
|
||
.参数 返回token, 文本型, 参考
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 局_代理IP, 文本型
|
||
.局部变量 retult, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 type, 文本型
|
||
|
||
局_代理IP = GetIP ()
|
||
.计次循环首 (20, )
|
||
.' 如果真 (工作中 = 假)
|
||
' 返回 (假)
|
||
.如果真结束
|
||
|
||
retult = diaoyong1 (局_代理IP)
|
||
' 调试输出 (“slide2->”, retult, , 局_代理IP)
|
||
' httpR.Open (“POST”, “http://127.0.0.1:5000/solve”)
|
||
' httpR.SetRequestHeaders (“User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36” + #换行符 + “Content-Type: application/json”)
|
||
' httpR.Send (“{” + #引号 + “gt” + #引号 + “:” + #引号 + “0484f8c2410a5a988d9e94292a34c0c4” + #引号 + “,” + #引号 + “challenge” + #引号 + “:” + #引号 + “5f9502ee96a67e7e41185d636f5d3a5e” + #引号 + “,” + #引号 + “proxy” + #引号 + “:” + #引号 + “127.0.0.1:1080” + #引号 + “}”)
|
||
|
||
' retult = 编码_usc2到ansi (httpR.GetResponseTextU2A ())
|
||
' 调试输出 (取程序名称 (1), retult)
|
||
' zyjson.清空 ()
|
||
' zyjson.解析 (retult)
|
||
' 参_challenge = “5f9502ee96a67e7e41185d636f5d3a5e”
|
||
' 参_validate = zyjson.取文本 (“validate”)
|
||
' 参_token = “cc7ac52b5e9c47f8b3c9919f7718eb5f”
|
||
' ' type = zyjson.取文本 (“type”)
|
||
zyjson.清空 ()
|
||
zyjson.解析 (retult)
|
||
返回challenge = zyjson.取文本 (“geetest_challenge”)
|
||
返回validate = zyjson.取文本 (“geetest_validate”)
|
||
返回token = zyjson.取文本 (“token”)
|
||
|
||
.如果 (返回challenge ≠ “” 且 返回validate ≠ “” 且 返回token ≠ “”)
|
||
返回 (真)
|
||
|
||
.否则
|
||
局_代理IP = GetIP ()
|
||
程序_延时 (1000)
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
返回 (假)
|
||
|
||
.子程序 slide3, 逻辑型, , 绑邮箱点选
|
||
.参数 参_Cookie, 文本型
|
||
.参数 参_challenge, 文本型, 参考
|
||
.参数 参_validate, 文本型, 参考
|
||
.参数 参_seccode, 文本型, 参考
|
||
.局部变量 retult, 文本型
|
||
.局部变量 局_代理IP, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 geetest_challenge, 文本型
|
||
.局部变量 geetest_validate, 文本型
|
||
.局部变量 code_token, 文本型
|
||
.局部变量 局_type, 文本型
|
||
.局部变量 gp, 整数型
|
||
|
||
局_代理IP = GetIP ()
|
||
.计次循环首 (10, )
|
||
.如果真 (工作中 = 假)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
gp = diaoyong2 (参_Cookie + “ Client_ip: ” + 局_代理IP + “ X-forwarded-for: ” + 局_代理IP, “”)
|
||
' retult = diaoyong2 (参_Cookie, 局_代理IP)
|
||
retult = 指针到文本 (gp)
|
||
' ‘调试输出 (“绑邮箱点选---”, retult)
|
||
zyjson.清空 ()
|
||
zyjson.解析 (retult)
|
||
参_challenge = zyjson.取文本 (“geetest_challenge”)
|
||
参_validate = zyjson.取文本 (“geetest_validate”)
|
||
参_seccode = zyjson.取文本 (“geetest_seccode”)
|
||
' 局_type = zyjson.取文本 (“type”)
|
||
' '这里的type 要为word才能通过
|
||
jiRel (gp)
|
||
.如果 (参_challenge ≠ “” 且 参_validate ≠ “” 且 参_seccode ≠ “”)
|
||
返回 (真)
|
||
|
||
.否则
|
||
局_代理IP = GetIP ()
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
返回 (假)
|
||
|
||
.子程序 初始化CK, 文本型
|
||
.参数 参_ip, 文本型
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 str, 文本型
|
||
.局部变量 did, 文本型
|
||
|
||
httpR.SetProxy (参_ip)
|
||
httpR.Open (“POST”, “https://passport.douyu.com/lapi/did/api/get?client_id=1&_=” + 时间_取现行时间戳 () + “&callback=axiosJsonpCallback1”)
|
||
httpR.SetRequestHeaders (#常量7)
|
||
httpR.SetCookie ()
|
||
httpR.Send ()
|
||
str = httpR.GetResponseTextU2A ()
|
||
did = 文本_取出中间文本 (str, “did” + #引号 + “:” + #引号, #引号)
|
||
返回 (did)
|
||
|
||
.子程序 登录斗鱼, 逻辑型
|
||
.参数 参_IP, 文本型
|
||
.参数 dy用户账号, 文本型
|
||
.参数 dy密码, 文本型
|
||
.参数 geetest_challenge, 文本型
|
||
.参数 geetest_validate, 文本型
|
||
.参数 code_token, 文本型
|
||
.参数 返回Cookie, 文本型, 参考
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 str, 文本型
|
||
.局部变量 CK, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 did, 文本型
|
||
.局部变量 局_CK, 文本型
|
||
.局部变量 err0, 整数型
|
||
|
||
.' 计次循环首 (5, )
|
||
' did = 初始化CK (参_IP)
|
||
.' 如果 (did ≠ “”)
|
||
' 跳出循环 ()
|
||
|
||
.否则
|
||
' 参_IP = GetIP ()
|
||
.如果结束
|
||
|
||
.' 计次循环尾 ()
|
||
.' 如果真 (did = “”)
|
||
' 返回 (假)
|
||
.如果真结束
|
||
|
||
did = “67f9ad421edfebd03635494f00041601”
|
||
CK = “dy_did=” + did + “; acf_did=” + did + “; last_login_way=phone; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” + 时间_取现行时间戳 (真)
|
||
' '调试输出 (“CK--------->”, CK)
|
||
httpR.SetProxy (参_IP)
|
||
.计次循环首 (5, )
|
||
httpR.Open (“POST”, “https://passport.douyu.com/iframe/loginNew”)
|
||
httpR.SetRequestHeaders (#常量login)
|
||
httpR.SetCookie (CK)
|
||
httpR.Send (“username=” + 编码_URL编码_JS (dy用户账号, ) + “&password=” + 校验_取md5 (到字节集 (dy密码)) + “&room_id=0&code_verify_data%5Bcode_type%5D=1&code_verify_data%5Bcode_token%5D=” + code_token + “&code_verify_data%5Bcode_data%5D%5Bgeetest_challenge%5D=” + geetest_challenge + “&code_verify_data%5Bcode_data%5D%5Bgeetest_validate%5D=” + geetest_validate + “&code_verify_data%5Bcode_data%5D%5Bgeetest_seccode%5D=” + geetest_validate + “%7Cjordan&code_verify_data%5Bcode_data%5D%5Bgt_version%5D=v3&redirect_url=https%3A%2F%2Fpassport.douyu.com%2Findex%2Flogin%3Fpassport_reg_callback%3DPASSPORT_REG_SUCCESS_CALLBACK%26passport_login_callback%3DPASSPORT_LOGIN_SUCCESS_CALLBACK%26passport_close_callback%3DPASSPORT_CLOSE_CALLBACK%26passport_dp_callback%3DPASSPORT_DP_CALLBACK%26type%3Dlogin%26client_id%3D1%26state%3Dhttps%253A%252F%252Fwww.douyu.com%252F%26source%3Dclick_topnavi_login&t=” + 时间_取现行时间戳 () + “&client_id=1&did=&lang=&isMultiAccount=0”)
|
||
str = 编码_usc2到ansi (httpR.GetResponseTextU2A ())
|
||
局_CK = httpR.GetAllResponseCookies ()
|
||
调试输出 (“登录XXX----”, str, 局_CK)
|
||
zyjson.清空 ()
|
||
zyjson.解析 (str)
|
||
err0 = zyjson.取整数 (“error”)
|
||
.如果 (str ≠ “”)
|
||
.如果真 (err0 = 130014)
|
||
.如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
|
||
返回Cookie = “账号登录异常”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (局_CK ≠ “”)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “验证码错误”, , 假) ≠ -1)
|
||
返回Cookie = “验证码错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “网络错误”, , 假) ≠ -1)
|
||
返回Cookie = “网络错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “账号或者密码错误”, , 假) ≠ -1)
|
||
返回Cookie = “账号或者密码错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
|
||
返回Cookie = “账号登录异常”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “账号不存在”, , 假) ≠ -1)
|
||
返回Cookie = “账号不存在”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “邮箱密码错误”, , 假) ≠ -1)
|
||
返回Cookie = “邮箱密码错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
|
||
|
||
.否则
|
||
参_IP = GetIP ()
|
||
httpR.SetProxy (参_IP)
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
.如果真 (局_CK = “”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
返回Cookie = 网页_Cookie合并更新 (CK, 局_CK)
|
||
返回 (真)
|
||
|
||
|
||
.子程序 登录斗鱼2, 逻辑型
|
||
.参数 参_IP, 文本型
|
||
.参数 dy用户账号, 文本型
|
||
.参数 dy密码, 文本型
|
||
.参数 geetest_challenge, 文本型
|
||
.参数 geetest_validate, 文本型
|
||
.参数 code_token, 文本型
|
||
.参数 返回code, 文本型, 参考 可空
|
||
.参数 返回Cookie, 文本型, 参考
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 str, 文本型
|
||
.局部变量 CK, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 did, 文本型
|
||
.局部变量 局_CK, 文本型
|
||
.局部变量 err0, 整数型
|
||
.局部变量 nicknameOrPhoneEncrypt, 文本型
|
||
.局部变量 password, 文本型
|
||
.局部变量 body, 文本型
|
||
.局部变量 code, 文本型
|
||
|
||
' did = “6ab33184203a7d50d5f9a8fa00021701”
|
||
' CK = “dy_did=” + did + “; acf_did=” + did + “; last_login_way=phone; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” + 时间_取现行时间戳 (真)
|
||
|
||
' '调试输出 (“CK--------->”, CK)
|
||
httpR.SetProxy (参_IP)
|
||
|
||
nicknameOrPhoneEncrypt = 编码_URL编码_JS (登录加密 (dy用户账号), 1)
|
||
password = 校验_取md5 (到字节集 (dy密码))
|
||
|
||
.计次循环首 (5, )
|
||
body = “type=1&nicknameOrPhoneEncrypt=” + nicknameOrPhoneEncrypt + “&password=” + password + “&room_id=0&code_type=1&code_token=” + code_token + “>_version=v3&geetest_challenge=” + geetest_challenge + “&geetest_validate=” + geetest_validate + “&geetest_seccode=” + geetest_validate + “%7Cjordan&code_data%5Bgeetest_challenge%5D=” + geetest_challenge + “&code_data%5Bgeetest_validate%5D=” + geetest_validate + “&code_data%5Bgeetest_seccode%5D=” + geetest_validate + “%7Cjordan&code_data%5Bgt_version%5D=v3&code_data%5Bcode%5D=&redirect_url=https%3A%2F%2Fpassport.douyu.com%2Findex%2Flogin%3Fpassport_reg_callback%3DPASSPORT_REG_SUCCESS_CALLBACK%26passport_login_callback%3DPASSPORT_LOGIN_SUCCESS_CALLBACK%26passport_close_callback%3DPASSPORT_CLOSE_CALLBACK%26passport_dp_callback%3DPASSPORT_DP_CALLBACK%26type%3Dlogin%26client_id%3D1%26state%3Dhttps%253A%252F%252Fwww.douyu.com%252F%253Fdyshid%253D0-6ab33184203a7d50d5f9a8fa00021701%26source%3Dclick_topnavi_login&t=” + 时间_取现行时间戳 () + “&client_id=1&did=&lang=&isMultiAccount=0&biz_type=1”
|
||
|
||
httpR.Open (“POST”, “https://passport.douyu.com/wgapi/member/passport/login”)
|
||
httpR.SetRequestHeaders (#常量login)
|
||
httpR.SetCookie (CK)
|
||
httpR.Send (body)
|
||
|
||
|
||
|
||
str = 编码_usc2到ansi (httpR.GetResponseTextU2A ())
|
||
局_CK = httpR.GetAllResponseCookies ()
|
||
' 调试输出 (“登录XXX----”, str, 局_CK)
|
||
zyjson.清空 ()
|
||
zyjson.解析 (str)
|
||
err0 = zyjson.取整数 (“error”)
|
||
.如果 (str ≠ “”)
|
||
.如果真 (err0 = 130014)
|
||
code = zyjson.取文本 (“data.remoteLogin.code”)
|
||
' 调试输出 (“code---”, code)
|
||
.如果真 (code ≠ “”)
|
||
返回code = code
|
||
返回Cookie = 网页_Cookie合并更新 (CK, 局_CK)
|
||
返回 (真)
|
||
.如果真结束
|
||
|
||
返回Cookie = “账号登录异常”
|
||
返回 (假)
|
||
.' 如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
|
||
|
||
' 返回Cookie = “账号登录异常”
|
||
' 返回 (假)
|
||
.如果真结束
|
||
.' 如果真 (局_CK ≠ “”)
|
||
' 跳出循环 ()
|
||
.如果真结束
|
||
|
||
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “验证码错误”, , 假) ≠ -1)
|
||
返回Cookie = “验证码错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “网络错误”, , 假) ≠ -1)
|
||
返回Cookie = “网络错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “账号或者密码错误”, , 假) ≠ -1)
|
||
返回Cookie = “账号或者密码错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
|
||
返回Cookie = “账号登录异常”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “账号不存在”, , 假) ≠ -1)
|
||
返回Cookie = “账号不存在”
|
||
返回 (假)
|
||
.如果真结束
|
||
.如果真 (寻找文本 (str, “邮箱密码错误”, , 假) ≠ -1)
|
||
返回Cookie = “邮箱密码错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
|
||
|
||
.否则
|
||
参_IP = GetIP ()
|
||
httpR.SetProxy (参_IP)
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
.如果真 (局_CK = “”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
返回Cookie = 网页_Cookie合并更新 (CK, 局_CK)
|
||
返回 (真)
|
||
|
||
|
||
.子程序 邮箱发送验证, 逻辑型
|
||
.参数 参_code, 文本型
|
||
.参数 参_CK, 文本型
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 str, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 err0, 整数型
|
||
.局部变量 runip, 文本型
|
||
|
||
runip = GetIP ()
|
||
|
||
httpR.SetProxy (runip)
|
||
.计次循环首 (3, )
|
||
httpR.Open (“POST”, “https://passport.douyu.com/iframe/sendEmail”)
|
||
httpR.SetRequestHeaders (#常量8)
|
||
httpR.SetCookie (参_CK)
|
||
httpR.Send (“cacheId=” + 参_code)
|
||
str = 编码_usc2到ansi (httpR.GetResponseTextU2A ())
|
||
|
||
' 调试输出 (“邮箱发送验证-”, str)
|
||
.如果 (str ≠ “”)
|
||
zyjson.解析 (str)
|
||
err0 = zyjson.取整数 (“error”)
|
||
.如果真 (err0 = 0)
|
||
返回 (真)
|
||
.如果真结束
|
||
.如果真 (err0 = -1)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
.否则
|
||
runip = GetIP ()
|
||
.如果结束
|
||
|
||
程序_延时 (500)
|
||
.计次循环尾 ()
|
||
返回 (假)
|
||
|
||
.子程序 提交邮件码验证, 逻辑型
|
||
.参数 参_code, 文本型
|
||
.参数 参_验证码, 文本型
|
||
.参数 参_CK, 文本型
|
||
.参数 返回jumURL, 文本型, 参考
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 str, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 局_url, 文本型
|
||
.局部变量 runip, 文本型
|
||
.局部变量 error, 文本型
|
||
|
||
runip = GetIP ()
|
||
httpR.SetProxy (runip)
|
||
.计次循环首 (10, )
|
||
httpR.Open (“POST”, “https://passport.douyu.com/iframe/remoteLogin”)
|
||
httpR.SetRequestHeaders (#常量8)
|
||
httpR.SetCookie (参_CK)
|
||
httpR.Send (“veify_type=2&phoneCaptcha=” + 参_验证码 + “&client_id=1&isMultiAccount=0&cacheId=” + 参_code)
|
||
str = httpR.GetResponseTextU2A ()
|
||
' 调试输出 (取程序名称 (1), str)
|
||
zyjson.解析 (str)
|
||
error = zyjson.取文本 (“error”)
|
||
局_url = 编码_usc2到ansi (zyjson.取文本 (“data.url”))
|
||
.如果真 (error = “101”)
|
||
返回jumURL = zyjson.取文本 (“msg”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
.如果 (局_url ≠ “”)
|
||
返回jumURL = 局_url
|
||
返回 (真)
|
||
|
||
.否则
|
||
runip = GetIP ()
|
||
.如果结束
|
||
程序_延时 (300)
|
||
.计次循环尾 ()
|
||
返回 (假)
|
||
|
||
.子程序 登录取Cookie, 逻辑型
|
||
.参数 参_IP, 文本型
|
||
.参数 参_ck, 文本型
|
||
.参数 参_url, 文本型
|
||
.参数 runCK, 文本型, 参考
|
||
.局部变量 httpR, WinHttpR
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_代理IP, 文本型
|
||
|
||
' 调试输出 (“参_url---”, 参_url)
|
||
httpR.SetProxy (参_IP)
|
||
.计次循环首 (5, )
|
||
httpR.Open (“GET”, “https:” + 参_url + “&callback=json_callback&_” + 时间_取现行时间戳 () + “=”)
|
||
httpR.SetRequestHeaders (#常量9)
|
||
httpR.SetCookie (参_ck)
|
||
httpR.Send ()
|
||
局_Cookie = httpR.GetAllResponseCookies ()
|
||
str = 编码_usc2到ansi (httpR.GetResponseTextU2A ())
|
||
' 调试输出 (“登录---”, str)
|
||
' 调试输出 (“局_Cookie--”, 局_Cookie)
|
||
.如果 (str ≠ “”)
|
||
.如果 (寻找文本 (str, “登录失败”, , 假) ≠ -1 或 寻找文本 (str, “无效”, , 假) ≠ -1)
|
||
runCK = “登录失败”
|
||
返回 (假)
|
||
|
||
.否则
|
||
.如果真 (局_Cookie ≠ “”)
|
||
runCK = 局_Cookie
|
||
返回 (真)
|
||
.如果真结束
|
||
|
||
.如果结束
|
||
|
||
.否则
|
||
参_IP = GetIP ()
|
||
httpR.SetProxy (参_IP)
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
局_Cookie = “取CK失败”
|
||
返回 (假)
|
||
|
||
|
||
.子程序 查询SM, 逻辑型
|
||
.参数 参_CK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 ident, 文本型
|
||
.局部变量 局_IP, 文本型
|
||
|
||
局_IP = GetIP ()
|
||
.计次循环首 (3, )
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/member/cp/cp_rpc_ajax”, , , 参_CK, , “Host: www.douyu.com” + #换行符 + “Connection: keep-alive” + #换行符 + “sec-ch-ua: ” + #引号 + “Google Chrome” + #引号 + “;v=” + #引号 + “119” + #引号 + “, ” + #引号 + “Chromium” + #引号 + “;v=” + #引号 + “119” + #引号 + “, ” + #引号 + “Not?A_Brand” + #引号 + “;v=” + #引号 + “24” + #引号 + “” + #换行符 + “Accept: application/json, text/javascript, */*; q=0.01” + #换行符 + “X-Requested-With: XMLHttpRequest” + #换行符 + “sec-ch-ua-mobile: ?0” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36” + #换行符 + “sec-ch-ua-platform: ” + #引号 + “Windows” + #引号 + “” + #换行符 + “Sec-Fetch-Site: same-origin” + #换行符 + “Sec-Fetch-Mode: cors” + #换行符 + “Sec-Fetch-Dest: empty” + #换行符 + “Referer: https://www.douyu.com/member/cp”, , , 真, , 局_IP))
|
||
.如果 (str ≠ “”)
|
||
zyjson.清空 ()
|
||
zyjson.解析 (str)
|
||
ident = zyjson.取文本 (“info.ident”)
|
||
.如果真 (寻找文本 (ident, “******”, , 假) ≠ -1)
|
||
返回 (真)
|
||
.如果真结束
|
||
.如果真 (ident = “false”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
.否则
|
||
局_IP = GetIP ()
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
返回 (假)
|
||
|
||
.子程序 查询账号状态, 逻辑型
|
||
.参数 参_CK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 zyjson, zyJsonValue
|
||
.局部变量 ident, 文本型
|
||
.局部变量 局_IP, 文本型
|
||
|
||
局_IP = GetIP ()
|
||
.计次循环首 (3, )
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://yuba.douyu.com/ybapi/topic/sign?timestamp=17011600”, 1, “group_id=2493219&cur_exp=0”, 参_CK, , “Host: yuba.douyu.com” + #换行符 + “Connection: keep-alive” + #换行符 + “Content-Length: 26” + #换行符 + “sec-ch-ua: ” + #引号 + “Google Chrome” + #引号 + “;v=” + #引号 + “119” + #引号 + “, ” + #引号 + “Chromium” + #引号 + “;v=” + #引号 + “119” + #引号 + “, ” + #引号 + “Not?A_Brand” + #引号 + “;v=” + #引号 + “24” + #引号 + “” + #换行符 + “Content-Type: application/x-www-form-urlencoded” + #换行符 + “X-CSRF-TOKEN: 2gBHQlimO9bVXG3Rj60IJ7siFA8y5Wdg” + #换行符 + “sec-ch-ua-mobile: ?0” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36” + #换行符 + “sec-ch-ua-platform: ” + #引号 + “Windows” + #引号 + “” + #换行符 + “Accept: */*” + #换行符 + “Origin: https://yuba.douyu.com” + #换行符 + “Referer: https://yuba.douyu.com/group/2493219” + #换行符 + “Accept-Language: zh-CN,zh;q=0.9”, , , 真, , 局_IP))
|
||
.如果 (str ≠ “”)
|
||
zyjson.清空 ()
|
||
zyjson.解析 (str)
|
||
ident = zyjson.取文本 (“info.ident”)
|
||
.如果真 (寻找文本 (ident, “******”, , 假) ≠ -1)
|
||
返回 (真)
|
||
.如果真结束
|
||
.如果真 (ident = “false”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
.否则
|
||
局_IP = GetIP ()
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
返回 (假)
|
||
|
||
|
||
.子程序 _取单条Cookie, 文本型, 公开, 从左往右获取
|
||
.参数 Cookie, 文本型
|
||
.参数 名称, 文本型
|
||
.参数 不附带名称, 逻辑型, 可空
|
||
.局部变量 t, 文本型
|
||
|
||
Cookie = 删首尾空 (Cookie)
|
||
.如果真 (取文本右边 (Cookie, 1) ≠ “;”)
|
||
Cookie = Cookie + “; ”
|
||
.如果真结束
|
||
t = 单条Cookie (Cookie, 名称)
|
||
.判断开始 (不附带名称 或 t = “”)
|
||
返回 (t)
|
||
.默认
|
||
返回 (名称 + “=” + t)
|
||
.判断结束
|
||
|
||
|
||
.子程序 单条Cookie, 文本型
|
||
.参数 原Cookies, 文本型
|
||
.参数 单条Cookie名称, 文本型
|
||
.局部变量 Cookies, 文本型, , "0"
|
||
.局部变量 i, 整数型
|
||
.局部变量 Name, 文本型
|
||
|
||
Cookies = 分割文本 (原Cookies, “;”, )
|
||
.计次循环首 (取数组成员数 (Cookies), i)
|
||
Name = 文本_取左边 (删首尾空 (Cookies [i]), “=”, , )
|
||
.如果真 (到小写 (Name) = 到小写 (单条Cookie名称))
|
||
.如果真 (寻找文本 (删首尾空 (Cookies [i]), “:”, , 假) ≠ -1)
|
||
返回 (文本_取出中间文本 (删首尾空 (Cookies [i]), “=”, “:”, , ))
|
||
.如果真结束
|
||
返回 (文本_取右边 (删首尾空 (Cookies [i]), “=”, , ))
|
||
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
返回 (“”)
|
||
|
||
|