Closed qlnba closed 1 year ago
那可不是搬一下码子了 基本就是要重写了 你对比这两个就知道了 旧版签到zsfc.js和新版签到zsfc.v3.js 😂
那可不是搬一下码子了 基本就是要重写了 你对比这两个就知道了 旧版签到zsfc.js和新版签到zsfc.v3.js 😂
哇塞大佬来啦😁😁
chavyleung库的掌飞更新了。搬一下码子更新一下青龙支持
确实是难度很大的😂
我相信你 我只是不会写node的js 不然我早就搬到青龙里面了 😂
我相信你 我只是不会写node的js 不然我早就搬到青龙里面了 😂
我菜鸟新手一个,还得是大佬,第一次遇到大佬哥亲临现场😁回头我研究研究,这几天在准备软考,不想分太多心
你这那科班出身的研究起来应该就更简单了 我法学专业的只能照葫芦画瓢 😋
你这那科班出身的研究起来应该就更简单了 我法学专业的只能照葫芦画瓢 😋
哎呀老哥你别这样了🤣我也不在行,只是感兴趣而已。真的是在虚心求学呐,指不定下次还需要您帮忙嘞
我还在研究你说的寻宝不能领取奖励的bug 哈哈哈
我还在研究你说的寻宝不能领取奖励的bug 哈哈哈
👍🏻👍🏻👍🏻期待
import requests
def send_request(iFlowId):
# 抓 https://act.game.qq.com/ams/ame/amesvr?ameVersion=0.3&iActivityId=468228 包
# 没有特别说明要抓包就是固定值,不要改
url = "https://act.game.qq.com/ams/ame/amesvr"
params = {
'ameVersion': '0.3',
'iActivityId': '468228'
}
headers = {
"Cookie": (
"access_token=抓包中的内容; "
"acctype=抓包中的内容; "
"appid=抓包中的内容; "
"openid=抓包中的内容"
)
}
data = {
'appid': '抓包中的内容',
'sArea': '抓包中的内容',
'sRoleId': '抓包中的内容',
'accessToken': '抓包中的内容',
'iActivityId': "468228",
'iFlowId': iFlowId,
'g_tk': '1842395457',
'sServiceType': 'bb'
}
response = requests.post(url, headers=headers, params=params, data=data)
response.encoding = 'gbk'
body = response.json()
print(body['flowRet']['sMsg'])
if __name__ == '__main__':
send_request("856152") # 856152 固定值,应该是领道具的
send_request("856155") # 856152 固定值,应该是领点券的
我测试了一下应该是这样领取奖励 其他应该没变化了
@chiupam 感谢老哥,突然就通透了。还请问老哥,抓到的url里面sSDID和sMiloTag是干什么用的,这俩值每次都不同,之前一直弄不明白😂
不晓得 反正没了也能领取奖励 不过你最好先抓个包来试一下 我没有号做验证了
不晓得 反正没了也能领取奖励 不过你最好先抓个包来试一下 我没有号做验证了
还是非常感谢,麻烦您了😄回头我测试一下。您也是在准备做寻宝模块吗
有打算 不过可能要备国考
import json
import re
import requests
def index():
# 这里只需要填写查询的QQ号就行
def extract(_html, _pattern):
match = re.search(_pattern, _html)
if match:
return json.loads(re.sub(r'^\((.*)\)$', r'\1', match.group(1)))
return None
url = "https://bang.qq.com/app/speed/treasure/index"
params = {
"roleId": "xxxxxxxxxx", # QQ帐号,抓包抓取
"areaId": "1", # 1是电信区,抓包抓取
"uin": "xxxxxxxxxx" # QQ帐号,抓包抓取
}
response = requests.get(url, params=params)
response.encoding = 'utf-8'
user = extract(response.text, r'window\.userInfo\s*=\s*eval\(\'([^\']+)\'\);')
starId = False
if user:
starId = max([key for key, value in user.get('starInfo', {}).items() if value == 1])
print("最高地图解锁星级:", starId)
else:
print("未找到用户信息")
if starId:
map_dicts = extract(response.text, r'window\.mapInfo\s*=\s*eval\(\'([^\']+)\'\);')
luck_dicts = [item for item in map_dicts[starId] if item.get('isdaji') == 1]
mapId, mapName = (luck_dicts[0]['id'], luck_dicts[0]['name']) if luck_dicts else (False, False)
print(f'今日大吉地图是[{mapName}] 地图id是[{mapId}]')
else:
print("未找到地图信息")
if __name__ == '__main__':
index()
获取最高地图解锁星级,今日大吉地图名称和今日大吉地图ID,只需要填写QQ号码即可
@chiupam 大佬代码书写的很漂亮啊,又精干,我好久没写码子,正则看不太懂了还得复习一下哈哈哈😂
import json
import re
import requests
def index():
# 这里只需要填写查询的QQ号就行
def extract(_html, _pattern):
match = re.search(_pattern, _html)
if match:
return json.loads(re.sub(r'^\((.*)\)$', r'\1', match.group(1)))
return None
url = "https://bang.qq.com/app/speed/treasure/index"
params = {
"roleId": "xxxxxxxxxx", # QQ帐号,抓包抓取
"areaId": "1", # 1是电信区,抓包抓取
"uin": "xxxxxxxxxx" # QQ帐号,抓包抓取
}
response = requests.get(url, params=params)
response.encoding = 'utf-8'
user = extract(response.text, r'window\.userInfo\s*=\s*eval\(\'([^\']+)\'\);')
starId = False
if user:
starId = max([key for key, value in user.get('starInfo', {}).items() if value == 1])
print("最高地图解锁星级:", starId)
else:
print("未找到用户信息")
if starId:
map_dicts = extract(response.text, r'window\.mapInfo\s*=\s*eval\(\'([^\']+)\'\);')
luck_dicts = [item for item in map_dicts[starId] if item.get('isdaji') == 1]
mapId, mapName = (luck_dicts[0]['id'], luck_dicts[0]['name']) if luck_dicts else (False, False)
print(f'今日大吉地图是[{mapName}] 地图id是[{mapId}]')
else:
print("未找到地图信息")
def dig(status):
# 只需要抓 https://bang.qq.com/app/speed/treasure/ajax/startDigTreasure 包就可以获取了
url = f"https://bang.qq.com/app/speed/treasure/ajax/{status}DigTreasure"
headers = {
"Referer": "https://bang.qq.com/app/speed/treasure/index",
"Cookie": (
"access_token=xxxxxxxxxx; " # 抓包抓取
"acctype=qc; " # 固定值
"appid=1105330667; " # 固定值
"openid=xxxxxxxxxx" # 抓包抓取
)
}
data = {
"mapId": "1", # 地图 mapId,脚本获取
"starId": "1", # 地图星级 starId,脚本获取
"areaId": "1", # 1是电信区,抓包抓取
"roleId": "xxxxxxxxxx", # QQ帐号,抓包抓取
"userId": "xxxxxxxxxx", # 抓包抓取
"uin": "xxxxxxxxxx", # QQ帐号,抓包抓取
"token": "xxxxxxxxxx" # 抓包抓取
}
response = requests.post(url, headers=headers, data=data)
response.encoding = 'gbk'
print(response.json())
def treasure(iFlowId):
# 这里就不用抓包了,直接用 dig 函数中处理过的包,修改一下传入对应参数就行
url = "https://act.game.qq.com/ams/ame/amesvr"
params = {
'ameVersion': '0.3', # 固定值
'iActivityId': '468228' # 固定值
}
headers = {
"Cookie": (
"access_token=xxxxxxxxxx; " # 抓包抓取
"acctype=qc; " # 固定值
"appid=1105330667; " # 固定值
"openid=xxxxxxxxxx" # 抓包抓取
)
}
data = {
'appid': '1105330667', # 固定值
'sArea': 'xxxxxxxxxx', # 通过 dig 请求体的 body 中获取 areaId 的值
'sRoleId': 'xxxxxxxxxx', # 通过 dig 请求体的 body 中获取 roleId 的值
'accessToken': 'xxxxxxxxxx', # 通过 dig 请求头的 headers 中获取 access_token 的值
'iActivityId': "468228", # 固定值
'iFlowId': iFlowId, # 固定传入值,一个是856152,另一个是856155
'g_tk': '1842395457', # 固定值
'sServiceType': 'bb' # 固定值
}
response = requests.post(url, headers=headers, params=params, data=data)
response.encoding = 'gbk'
print(response.json()['flowRet'])
if __name__ == '__main__':
index() # 获取地图星级、大吉地图信息
dig("start") # 开始寻宝,如果在寻宝中了则会透露出开始寻宝的时间啊
dig("end") # 结束寻宝,如果没有到时间就结束会消耗每日次数
treasure("856152") # 856152 固定值,应该是领道具的
treasure("856155") # 856152 固定值,应该是领点券的
剩下的看你了
@chiupam 还有100经验的领取,iflowid是不是也有对应固定的id
@chiupam 还有100经验的领取,iflowid是不是也有对应固定的id
100经验❓这经验给狗狗都不想去领 签到那边的iflowId好像是每个月不一样 我现在还找不到它从哪算来的 或许下个月也能用上个月的 不过也还不清楚 得等下个月才知道 但航海的iflowId是固定那两个 如果不是的话多找几个号抓下包看看
@chiupam 也是哦🤣签到那边的我抓了几个找了下规则,cookie里面有这个字段speedqqcomrouteLine=a20230921lb6s7dp
然后就可以获取签到html页面,url可以拼接出来"http://speed.qq.com/lbact/"+speedqqcomrouteLine+"/zfmrqd.html"
用Beautifulsoup模块提取html里面标签就能取到iflowid,但前提是得每月抓一次cookie来更新它
每个月的月初吗?
每个月的月初吗?
旧版是,但是旧版url是固定的,新版url每个月应该不一样,是由a+年月日+一串字符组成的路径,只要确定了每个月的url,所有的id就都有了
chavyleung库的掌飞更新了。搬一下码子更新一下青龙支持