keep操作源码例程
.版本 2
.支持库 spec
.支持库 dp1
.程序集 窗口程序集_启动窗口
.程序集变量 手机号, 文本型
.程序集变量 token, 文本型
.程序集变量 user_id, 文本型
.程序集变量 _ed, 文本型
.程序集变量 代理, 文本型
.程序集变量 device, 文本型
.子程序 _按钮1_被单击
代理 = “”
' token = “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1Y2M1NGM5Yjc5MGI5MzFmNWFjYTZkM2YiLCJ1c2VybmFtZSI6IuS6keacteS4iueahGtlZTE1OCIsIl92IjoiMSIsIl9lZCI6Ing5L0dseGptNm52UmxGcXNaL0Z0bloxb1Y3NzN1QitSbjdtemJ3bysxZ05abWRTZlRlb1U4V3Z5R0F4dHZqSHoiLCJnZW5kZXIiOiJGIiwiZGV2aWNlSWQiOiIiLCJpc3MiOiJodHRwOi8vd3d3LmdvdG9rZWVwLmNvbS8iLCJleHAiOjE1Nzk3NjIyNTMsImlhdCI6MTU1NjQzNDI1M30.RNn83uUPcFUUmY3baVWDQ2aElrSyuKzwoV_-_Kv5azE”
' user_id = “5cc54c9b790b931f5aca6d3f”
device = “8651660245179900081b96b933c11111f634957d”
手机号 = 编辑框1.内容
调试输出 (获取验证码 ())
.子程序 获取验证码, 逻辑型, 公开
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://api.gotokeep.com/account/v2/sms”)
http.SetProxy (代理)
json.解析 (#获取验证码)
json.置属性 (“mobile”, 手机号)
json.置属性 (“time”, 时间_取现行时间戳 ())
body = json.取数据文本 ()
body = AES加密 (body)
json.解析 (#获取验证码_final)
json.置属性 (“body”, body)
body = json.取数据文本 ()
gethead (http, 取数据摘要 (到字节集 (body)))
http.Send (body)
data = http.GetResponseTextUtf8ToAnsi ()
.如果真 (寻找文本 (data, “true”, , 假) ≠ -1)
返回 (真)
.如果真结束
返回 (假)
.子程序 确认验证码, 逻辑型, 公开
.参数 验证码, 文本型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://api.gotokeep.com/account/v3/login/sms”)
http.SetProxy (代理)
json.解析 (#确认验证码)
' {"captcha":"3309","countryCode":"86","countryName":"CHN","mobile":"13173978101","type":"login"}
json.置属性 (“captcha”, 验证码)
json.置属性 (“mobile”, 手机号)
body = json.取数据文本 ()
gethead (http, 取数据摘要 (到字节集 (body + “/account/v3/login/smsV1QiLCJhbGciOiJIUzI1NiJ9”)))
http.Send (body)
data = http.GetResponseTextUtf8ToAnsi ()
json.解析 (data)
调试输出 (json.取通用属性 (“ok”))
.判断开始 (json.取通用属性 (“ok”) = “-1”)
token = json.取通用属性 (“data.token”)
json.解析 (到文本 (编码_BASE64解码 (文本_取出中间文本 (token, “.”, “.”))))
user_id = json.取通用属性 (“username”)
_ed = json.取通用属性 (“_ed”)
调试输出 (token, user_id, _ed)
返回 (真)
.默认
调试输出 (json.取通用属性 (“text”))
.判断结束
返回 (假)
' ============ ============ www.sanye.cx =============--
’本站收录资源,如有密码,默认解压密码都为:www.sanye.cx
’三叶资源网官方③群:33301895
' 投稿邮箱:[email protected]
' ============ ==================================--
’专注易语言,按键精灵等编程源码分享的网站
’三叶资源网收集的软件和源码,大部分为软件作者或网友推荐,
’版权归原作者所有,仅供学习和研究使用。
’转载本站提供的资源请勿删除本说明文件。
' 本站提供资源只可供研究使用,请在下载24小时内删除,勿用于商业用途,由此引起一切后果与本站无关。
' ============ ============ www.sanye.cx =============--
.子程序 设置昵称, 逻辑型
.参数 昵称, 文本型
.参数 生日, 文本型, , 1990-6-1
.参数 性别, 文本型, , F=女 M=男
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://api.gotokeep.com/account/v3/register/setting”)
http.SetProxy (代理)
json.解析 (#设置昵称)
' {"captcha":"3309","countryCode":"86","countryName":"CHN","mobile":"13173978101","type":"login"}
json.置属性 (“birthday”, 生日)
json.置属性 (“gender”, 性别)
json.置属性 (“username”, 昵称)
body = json.取数据文本 ()
gethead (http, 取数据摘要 (到字节集 (body + “/account/v3/register/settingV1QiLCJhbGciOiJIUzI1NiJ9”)))
http.Send (body)
调试输出 (http.GetResponseTextUtf8ToAnsi ())
data = http.GetResponseTextUtf8ToAnsi ()
.如果真 (寻找文本 (data, “true”, , 假) ≠ -1)
返回 (真)
.如果真结束
返回 (假)
' {"avatar":"","birthday":"1990-6-1","gender":"F","username":"小keep"}
.子程序 获取设置密码验证码, 逻辑型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://api.gotokeep.com/account/v2/sms”)
http.SetProxy (代理)
json.解析 (#设置密码验证码)
' {"countryName":"86","type":"firstSetPwd","mobile":"13173978101","countryCode":"86"}
json.置属性 (“mobile”, 手机号)
body = json.取数据文本 ()
body = AES加密 (body)
json.解析 (#获取验证码_final)
json.置属性 (“body”, body)
body = json.取数据文本 ()
gethead (http, 取数据摘要 (到字节集 (body + “/account/v2/smsV1QiLCJhbGciOiJIUzI1NiJ9”)))
http.Send (body)
data = http.GetResponseTextUtf8ToAnsi ()
.如果真 (寻找文本 (data, “true”, , 假) ≠ -1)
返回 (真)
.如果真结束
返回 (假)
.子程序 设置密码, 逻辑型
.参数 验证码, 文本型
.参数 密码, 文本型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://api.gotokeep.com/account/v3/first_set_pwd”)
http.SetProxy (代理)
json.解析 (#设置密码1)
' {"captcha":"7495","password":"mh123456"}
json.置属性 (“captcha”, 验证码)
body = json.取数据文本 ()
gethead (http, 取数据摘要 (到字节集 (body + “/account/v3/first_set_pwdV1QiLCJhbGciOiJIUzI1NiJ9”)))
http.Send (body)
data = http.GetResponseTextUtf8ToAnsi ()
调试输出 (data)
http.Rest ()
http.Open (“POST”, “https://api.gotokeep.com/account/v3/first_set_pwd”)
json.解析 (#设置密码)
' {"captcha":"7495","password":"mh123456"}
json.置属性 (“captcha”, 验证码)
json.置属性 (“password”, 密码)
body = json.取数据文本 ()
gethead (http, 取数据摘要 (到字节集 (body + “/account/v3/first_set_pwdV1QiLCJhbGciOiJIUzI1NiJ9”)))
http.Send (body)
data = http.GetResponseTextUtf8ToAnsi ()
调试输出 (data)
.如果真 (寻找文本 (data, “true”, , 假) ≠ -1)
返回 (真)
.如果真结束
返回 (假)
.子程序 设置anser, 逻辑型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://show.gotokeep.com/userinfo/answer”)
http.SetProxy (代理)
body = #问题
gethead (http, 取数据摘要 (到字节集 (编码_gb2312到utf8 (body + “/userinfo/answerV1QiLCJhbGciOiJIUzI1NiJ9”))))
http.Send (body)
调试输出 (http.GetResponseTextUtf8ToAnsi ())
data = http.GetResponseTextUtf8ToAnsi ()
.如果真 (寻找文本 (data, “true”, , 假) ≠ -1)
返回 (真)
.如果真结束
返回 (假)
.子程序 开始评论, , 公开
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
.局部变量 i, 整数型
.局部变量 uid, 文本型
.局部变量 wid, 文本型
http.Open (“GET”, “https://api.gotokeep.com/feed/v1/feed/list?feedType=hot&lastId=&position=0&needCommentInfo=1&needLikeInfo=1&needFavoriteInfo=1&needRelationInfo=1&sort=byHeat”)
http.SetProxy (代理)
gethead (http, )
http.Send ()
调试输出 (http.GetResponseTextUtf8ToAnsi ())
data = http.GetResponseTextUtf8ToAnsi ()
json.解析 (data)
.计次循环首 (json.取成员数 (“data.items”), i)
uid = json.取通用属性 (“data.items[” + 到文本 (i - 1) + “].entry.author._id”)
wid = json.取通用属性 (“data.items[” + 到文本 (i - 1) + “].entry._id”)
调试输出 (uid, wid)
文章点赞 (wid)
文章点星 (wid)
用户点关注 (uid)
文章评论 (wid, “小哥哥好帅啊能不能教教我Q2154520675”)
.如果真 (i % 10 = 0)
子程获取成长值 ()
.如果真结束
.计次循环尾 ()
.子程序 文章点赞, 逻辑型, 公开
.参数 wid, 文本型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
http.Open (“POST”, “https://api.gotokeep.com/social/v2/entries/” + wid + “/toggle_likes”)
http.SetProxy (代理)
gethead (http, 取数据摘要 (到字节集 (编码_gb2312到utf8 (“/social/v2/entries/” + wid + “/toggle_likesV1QiLCJhbGciOiJIUzI1NiJ9”))))
http.Send ()
data = http.GetResponseTextUtf8ToAnsi ()
调试输出 (“文章点赞:” + wid + “-->” + data)
返回 (真)
.子程序 文章点星, 逻辑型, 公开
.参数 wid, 文本型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
.局部变量 err, 文本型
http.Open (“POST”, “https://api.gotokeep.com/social/v3/bookmark/entry/” + wid)
http.SetProxy (代理)
gethead (http, )
http.Send ()
data = http.GetResponseTextUtf8ToAnsi ()
' 调试输出 (“文章点星:” + wid + “-->” + data)
json.解析 (data)
.判断开始 (json.取通用属性 (“ok”) = “-1”)
调试输出 (“文章点星:” + wid + “-->成功”)
返回 (真)
.默认
err = json.取通用属性 (“text”)
调试输出 (“文章点星:” + wid + “-->” + err)
.判断结束
返回 (假)
.子程序 用户点关注, 逻辑型, 公开
.参数 uid, 文本型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
data = 网页_访问s (“https://api.gotokeep.com/social/v2/people/” + uid + “/follow”, 1, #follow, , , gethead_测试 (取数据摘要 (到字节集 (#follow + “/social/v2/people/” + uid + “/followV1QiLCJhbGciOiJIUzI1NiJ9”))), , , , )
' http.Open (“POST”, “https://api.gotokeep.com/social/v2/people/” + uid + “/follow”)
' http.SetProxy (代理)
' gethead (http, 取数据摘要 (到字节集 (#follow + “/social/v2/people/” + uid + “/followV1QiLCJhbGciOiJIUzI1NiJ9”)))
' http.Send (#follow)
' data = http.GetResponseTextUtf8ToAnsi ()
调试输出 (“用户点关注:” + uid + “-->” + http.GetStatusText ())
子程获取成长值 ()
返回 (真)
.子程序 子程获取成长值, 逻辑型, 公开
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
data = 网页_访问s (“https://api.gotokeep.com/messenger/v2/conversations/unread”, 0, , , , gethead_测试 (), , , , )
' http.Open (“GET”, “https://api.gotokeep.com/messenger/v2/conversations/unread”)
' http.SetProxy (代理)
' gethead (http, )
' http.Send ()
' data = http.GetResponseTextUtf8ToAnsi ()
调试输出 (“子程获取成长值:” + “-->” + data)
返回 (真)
.子程序 文章评论, 逻辑型, 公开
.参数 wid, 文本型
.参数 content, 文本型
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
.局部变量 err, 文本型
.局部变量 sign, 文本型
.局部变量 协议头, 文本型
' wid = “5c9b7da579a34730ad75a1de”
http.Rest ()
http.Auto (假)
http.Open (“POST”, “https://api.gotokeep.com/social/v3/entry/” + wid + “/comments”)
http.SetProxy (代理)
json.解析 (#文章评论)
json.置属性 (“content”, content)
body = 编码_gb2312到utf8 (json.取数据文本 ())
' sign = 取数据摘要 (到字节集 (body + “/social/v3/entry/” + wid + “/commentsV1QiLCJhbGciOiJIUzI1NiJ9”))
' 协议头 = 文本_替换 (#常量2, , , , “[sign]”, sign + sign (sign), “[time]”, 时间_取现行时间戳 ())
data = 网页_访问s (“https://api.gotokeep.com/social/v3/entry/” + wid + “/comments”, 1, body, , , gethead_测试 (取数据摘要 (到字节集 (body + “/social/v3/entry/” + wid + “/commentsV1QiLCJhbGciOiJIUzI1NiJ9”))), , , , )
' 调试输出 (data)
' http.SendBin (到字节集 (body))
' data = http.GetResponseText ()
' 调试输出 (“文章评论:” + wid + “消息:” + content + “-->” + data)
调试输出 (data)
json.解析 (data)
.判断开始 (json.取通用属性 (“ok”) = “-1”)
调试输出 (“文章评论:” + wid + “消息:” + content + “-->成功”)
返回 (真)
.默认
err = json.取通用属性 (“text”)
调试输出 (“文章评论:” + wid + “消息:” + content + “-->” + err)
.判断结束
返回 (假)
.子程序 发布文章, 逻辑型, 公开
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
.局部变量 err, 文本型
http.Rest ()
http.Open (“POST”, “https://api.gotokeep.com/social/v2/entries/tweet”)
http.SetProxy (代理)
json.解析 (#常量1)
json.置属性 (“requestId”, 时间_取现行时间戳 ())
json.置属性 (“content”, 文本_取随机字母 (20))
json.置属性 (“photo”, “//pdd.dreamqq.net/2.jpg”)
body = json.取数据文本 ()
' {"content":"asdee","editTypes":["text","photo"],"public":true,"moment":"instant","originalMd5":"31d0e5f3b4952c30dd58037f72a45497","photo":"//static1.keepcdn.com/picture/2019/04/28/03/05/57387e51b04178ac5cc4a284d20f9c47d9f1bf47_256x256.jpg","requestId":"1556391917813","squadDayIndex":0,"stars":0,"suitDayIndex":0,"type":"direct"}
data = 网页_访问s (“https://api.gotokeep.com/social/v2/entries/tweet”, 1, body, , , gethead_测试 (取数据摘要 (到字节集 (body + “/social/v2/entries/tweetV1QiLCJhbGciOiJIUzI1NiJ9”))), , , , )
调试输出 (“发布文章:” + “-->” + data)
json.解析 (data)
.判断开始 (json.取通用属性 (“ok”) = “-1”)
调试输出 (“发布文章:” + “消息:” + “-->成功”)
返回 (真)
.默认
err = json.取通用属性 (“text”)
调试输出 (“发布文章:” + “消息:” + “-->” + err)
.判断结束
返回 (假)
' {"content":"asd","editTypes":["text","photo"],"public":true,"moment":"instant","originalMd5":"31d0e5f3b4952c30dd58037f72a45497","photo":"//static1.keepcdn.com/picture/2019/04/28/03/05/57387e51b04178ac5cc4a284d20f9c47d9f1bf47_256x256.jpg","requestId":"1556391917813","squadDayIndex":0,"stars":0,"suitDayIndex":0,"type":"direct"}
.子程序 获取当前成长值, 文本型, 公开
.局部变量 http, WinHttpW
.局部变量 json, 类_Json
.局部变量 body, 文本型
.局部变量 data, 文本型
.局部变量 成长值, 文本型
.局部变量 err, 文本型
http.Open (“GET”, “https://api.gotokeep.com/social/v5/people/summary?userId=” + user_id)
gethead (http, )
http.Send ()
data = http.GetResponseTextUtf8ToAnsi ()
json.解析 (data)
.判断开始 (json.取通用属性 (“ok”) = “-1”)
成长值 = json.取通用属性 (“data[0].info.info.totalExp”)
调试输出 (“获取当前成长值:” + user_id + “-->” + 成长值)
返回 (成长值)
.默认
err = json.取通用属性 (“text”)
调试输出 (“获取当前成长值:” + user_id + “-->” + err)
返回 (err)
.判断结束
返回 (“”)
.子程序 AES加密, 文本型, 公开
.参数 明文, 文本型
.局部变量 局部_结果, 文本型
局部_结果 = 编码_AES加密 (明文, “56fe59;82g:d873c”, “2346892432920300”, #Mode_CBC, #Pkcs7Padding, , , , )
返回 (局部_结果)
.子程序 gethead_测试, 文本型, 公开
.参数 sign, 文本型, 可空
.局部变量 ads, 文本型
.局部变量 协议头, 文本型
协议头 = 文本_替换 (#常量2, , , , “[ads]”, AES加密 (#UA), “[time]”, 时间_取现行时间戳 (), “[device]”, device, “[user_id]”, user_id)
.如果真 (token ≠ “”)
协议头 = 协议头 + #换行符 + “Authorization: Bearer ” + token
.如果真结束
.如果真 (sign ≠ “”)
协议头 = 协议头 + #换行符 + “sign: ” + sign + sign (sign)
.如果真结束
返回 (协议头)
.子程序 gethead
.参数 http, WinHttpW
.参数 sign, 文本型, 可空
.局部变量 ads, 文本型
http.SetContentType (“application/json; charset=UTF-8”)
http.SetRequestHeader (“Host”, “api.gotokeep.com”)
http.SetRequestHeader (“Connection”, “Keep-Alive”)
http.SetRequestHeader (“x-os-version”, “5.1.1”)
http.SetRequestHeader (“x-channel”, “anzhi”)
http.SetRequestHeader (“x-ads”, AES加密 (#UA))
http.SetRequestHeader (“x-locale”, “zh--CN”)
http.SetRequestHeader (“x-screen-height”, “640”)
http.SetRequestHeader (“x-is-new-device”, “false”)
http.SetRequestHeader (“User-Agent”, “Keep+6.16.0%2FAndroid+5.1.1-17965+huawei+huawei+rio-al00”)
http.SetRequestHeader (“x-manufacturer”, “huawei”)
http.SetRequestHeader (“x-keep-timezone”, “Asia/Shanghai”)
http.SetRequestHeader (“x-timestamp”, 时间_取现行时间戳 ())
http.SetRequestHeader (“x-screen-width”, “360”)
http.SetRequestHeader (“x-app-platform”, “keepapp”)
http.SetRequestHeader (“x-os”, “Android”)
http.SetRequestHeader (“x-device-id”, “8651660245179910081b96b933c11111f634957d”)
http.SetRequestHeader (“x-version-name”, “6.16.0”)
http.SetRequestHeader (“x-user-id”, user_id)
.如果真 (token ≠ “”)
http.SetRequestHeader (“Authorization”, “Bearer ” + token)
.如果真结束
http.SetRequestHeader (“x-version-code”, “17965”)
http.SetRequestHeader (“x-model”, “huawei+rio-al00”)
.如果真 (sign ≠ “”)
http.SetRequestHeader (“sign”, sign + sign (sign))
.如果真结束
' http.SetRequestHeader (“Accept-Encoding”, “gzip, deflate”)
.子程序 sign, 文本型
.参数 d, 文本型
.局部变量 v9, 整数型
.局部变量 i, 整数型
.局部变量 v27, 文本型
.局部变量 v12, 文本型
.局部变量 v13, 文本型
.局部变量 v14, 文本型
.局部变量 v4, 文本型
.局部变量 v15, 整数型
.局部变量 v5, 整数型
.局部变量 s1, 文本型, , "0"
文本_逐字分割 (d, s1)
.如果真 (取数组成员数 (s1) = 32)
v9 = 0
i = 8
.判断循环首 (i > 0)
v12 = s1 [i]
v13 = s1 [i + 8]
v14 = s1 [i + 16]
v4 = s1 [i + 24]
v15 = 十六到十 (v12) + 十六到十 (v13) + 十六到十 (v14) + 十六到十 (v4) + v9 + 929
v5 = 十六到十 (v12) + 十六到十 (v13) + 十六到十 (v14) + 十六到十 (v4) + v9 + 929
.如果真 (v5 < 0)
v5 = 十六到十 (v12) + 十六到十 (v13) + 十六到十 (v14) + 十六到十 (v4) + v9 + 944
.如果真结束
v9 = 右移 (v5, 4)
v27 = 十到十六 (v15 % 16) + v27
i = i - 1
.判断循环尾 ()
.如果真结束
返回 (到小写 (v27))
.子程序 __启动窗口_创建完毕
.子程序 _按钮2_被单击
调试输出 (确认验证码 (编辑框2.内容))
.子程序 _按钮3_被单击
调试输出 (设置昵称 (“小小kee158”, “1990-6-1”, “F”))
.子程序 _按钮4_被单击
.计次循环首 (20, )
子程获取成长值 ()
调试输出 (获取当前成长值 ())
' 开始评论 ()
调试输出 (发布文章 ())
程序_延时 (50000)
.计次循环尾 ()
.子程序 _按钮5_被单击
调试输出 (获取设置密码验证码 ())
.子程序 _按钮6_被单击
调试输出 (设置密码 (编辑框3.内容, 编辑框4.内容))
.子程序 _按钮7_被单击
.计次循环首 (20, )
子程获取成长值 ()
调试输出 (获取当前成长值 ())
开始评论 ()
' 调试输出 (发布文章 ())
程序_延时 (50000)
.计次循环尾 ()
keep源码
keep软件获取api