Py学习记录
Python 常规学习
Python学习笔记(一)
Python学习笔记(二)
Python学习笔记(三)
Python学习笔记(四)
Python学习笔记(五)
Python学习笔记(六)
Python学习笔记(七)
Python习题(一)
Python习题(二)
Python习题(三)
Python习题(四)
Python习题(五)
Python常见Bug
Python编程环境
Python-依赖安装(三方库)
Python-VS Code
pip-换源
py 程序转 exe
Python-打开选择文件对话框
Python 项目
Python-密码学
Python-与佛伦禅
Python-喵语翻译
Python-翻译服务器
Python-邮件发送
Python-自动签到
Python-自动签到(Post请求)
Python-自动签到(模拟操作)
Python-图片添加二维码
Python-数据可视化
Python-端口扫描器
Python-未测试项目
Python-虚拟环境
Python-临时环境
Python-venv虚拟环境
Python-Conda
Python-OpenCV
OpenCV-人脸识别
Python-PyTorch
本文档使用 MrDoc 发布
-
+
首页
Python-自动签到(Post请求)
主要解决有些网站手动签到,使用 `Cookie` 来进行登录,故存在 Cookie 过期问题,也就相当于每天签一次变成按Cookie有效期签一次 ## 获取请求 以下我将使用 [godlike](https://panel.godlike.host/) 服务器手动续签来举例 1. 打开要签到的网站并登录账号 电脑会保存登录帐号生成的 Cookie,一会一并提取 2. 打开签到所在的页面,打开 `开发者工具(F12)——网络(Network)`  注意,一定要到签到最后一步的页面(如 百度贴吧点击签到还会让填写签到内容的,填写都完成后最后一步提交才是我们要的页面) 3. 点击签到,然后查看网络日志 可以通过响应来找,一般签到后的提示就是响应的内容  4. 提取关键信息 `请求URL、请求方法、响应标头(包含Cookie)`  ## 编写 Python 脚本实现自动化 这种是最简单的,godlike因为在签到前会获取最新TOKEN参与签到提交,故TOKEN更新后就作废(实测一天过期) ```python import requests # 使用 pip install requests 安装 # 请求的 URL url = "https://panel.godlike.host/api/client/servers/23b915a5-91c3-4cdc-bc2a-fb4131752c24/addtime" # 请求标头 headers = { # 本质就是把请求标头中的按照下列格式填入 # "参数名称":"参数值", "Accept": "application/json", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "Content-Length": "0", "Cookie": "xxx", # 替换为你的Cookie "Dnt": "1", "Origin": "https://panel.godlike.host", "Referer": "https://panel.godlike.host/server/23b915a5", "Sec-Ch-Ua": "\"Chromium\";v=\"118\", \"Microsoft Edge\";v=\"118\", \"Not=A?Brand\";v=\"99\"", "Sec-Ch-Ua-Mobile": "?0", "Sec-Ch-Ua-Platform": "\"Windows\"", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46", "X-Requested-With": "XMLHttpRequest", "X-Xsrf-Token": "xxx" # 替换为你的X-Xsrf-Token } # 使用 post 方式请求,最大等待时间5分钟 response = requests.post(url, headers=headers, timeout=300) # 返回请求情况 if response.status_code == 204: print("请求成功,状态码为204 No Content") else: print(f"请求失败,状态码为{response.status_code}") print(f"错误信息: {response.text}") ``` 这个脚本配合定期运行就可以实现自动签到 如群晖的任务计划:`python /volume1/nas/godlike/godlike.py > /volume1/nas/godlike/godlike.log` ### 基于获取参数再进行签到 解决 godlike 每次签到前要先获取最新TOKEN,再带入签到提交的cookie ```python import requests # 请求 from urllib.parse import unquote # URL编码转字符串 # 服务器相关ID,Overview 页面下可查看 ID = "xxx" # ID SERVER_ID = "xxx" # 服务器ID # F12提取,remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d 参数值,本质就是帐号的 cookie # 注意使用结尾为%3D的,不要转换为=的 Cookie = "xxx" # 先获取最新的 TOKEN,续时间时需要 url1 = f"https://panel.godlike.host/api/client/servers/{SERVER_ID}/players" headers1 = { "Accept": "application/json", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", # Cookie 一般不需要更改,若修改有些信息为固定的,自行替换,注意保持格式 "Cookie": f"_gcl_au=1.1.1126357110.1697169092; sbjs_migrations=1418474375998%3D1; sbjs_current_add=fd%3D2023-10-13%2011%3A51%3A33%7C%7C%7Cep%3Dhttps%3A%2F%2Fgodlike.host%2Fgame-servers-free-en%7C%7C%7Crf%3D%28none%29; sbjs_first_add=fd%3D2023-10-13%2011%3A51%3A33%7C%7C%7Cep%3Dhttps%3A%2F%2Fgodlike.host%2Fgame-servers-free-en%7C%7C%7Crf%3D%28none%29; sbjs_current=typ%3Dtypein%7C%7C%7Csrc%3D%28direct%29%7C%7C%7Cmdm%3D%28none%29%7C%7C%7Ccmp%3D%28none%29%7C%7C%7Ccnt%3D%28none%29%7C%7C%7Ctrm%3D%28none%29; sbjs_first=typ%3Dtypein%7C%7C%7Csrc%3D%28direct%29%7C%7C%7Cmdm%3D%28none%29%7C%7C%7Ccmp%3D%28none%29%7C%7C%7Ccnt%3D%28none%29%7C%7C%7Ctrm%3D%28none%29; _ga=GA1.1.1783439723.1697171473; _ga_BZ5WW4P6JQ=GS1.1.1697188687.2.1.1697188882.60.0.0; remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d={Cookie}; _clck=33dj59|2|fg1|0|1381; _clsk=3b0zk9|1697862838283|1|1|p.clarity.ms/collect; sbjs_udata=vst%3D13%7C%7C%7Cuip%3D%28none%29%7C%7C%7Cuag%3DMozilla%2F5.0%20%28Windows%20NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F118.0.0.0%20Safari%2F537.36%20Edg%2F118.0.2088.57", "Dnt": "1", "Referer": f"https://panel.godlike.host/server/{ID}", "Sec-Ch-Ua": "\"Chromium\";v=\"118\", \"Microsoft Edge\";v=\"118\", \"Not=A?Brand\";v=\"99\"", "Sec-Ch-Ua-Mobile": "?0", "Sec-Ch-Ua-Platform": "\"Windows\"", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57", "X-Requested-With": "XMLHttpRequest" } response1 = requests.get(url1, headers=headers1, timeout=300) # 最大等待时间5分钟 if response1.status_code // 100 == 2: # 整除后为判断2开头(均为请求成功) print(f"请求成功,状态码为{response1.status_code}") # 获取最新 TOKEN pterodactyl_session = response1.cookies.get('pterodactyl_session') XSRF_TOKEN = response1.cookies.get('XSRF-TOKEN') # 测试使用,显示是否能获取到参数 # print(f"pterodactyl_session 的值为: {pterodactyl_session}") # print(f"XSRF-TOKEN 的值为: {XSRF_TOKEN}") # print(f"信息: {response1.text}") else: print(f"请求失败,状态码为{response1.status_code}") print(f"错误信息: {response1.text}") # 续时间,带入刚获取的 TOKEN url2 = f"https://panel.godlike.host/api/client/servers/{SERVER_ID}/addtime" headers2 = { "Accept": "application/json", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "Content-Length": "0", # Cookie 一般不需要更改,若修改有些信息为固定的,自行替换,注意保持格式(pterodactyl_session,XSRF_TOKEN) "Cookie": f"_gcl_au=1.1.1126357110.1697169092; sbjs_migrations=1418474375998%3D1; sbjs_current_add=fd%3D2023-10-13%2011%3A51%3A33%7C%7C%7Cep%3Dhttps%3A%2F%2Fgodlike.host%2Fgame-servers-free-en%7C%7C%7Crf%3D%28none%29; sbjs_first_add=fd%3D2023-10-13%2011%3A51%3A33%7C%7C%7Cep%3Dhttps%3A%2F%2Fgodlike.host%2Fgame-servers-free-en%7C%7C%7Crf%3D%28none%29; sbjs_current=typ%3Dtypein%7C%7C%7Csrc%3D%28direct%29%7C%7C%7Cmdm%3D%28none%29%7C%7C%7Ccmp%3D%28none%29%7C%7C%7Ccnt%3D%28none%29%7C%7C%7Ctrm%3D%28none%29; sbjs_first=typ%3Dtypein%7C%7C%7Csrc%3D%28direct%29%7C%7C%7Cmdm%3D%28none%29%7C%7C%7Ccmp%3D%28none%29%7C%7C%7Ccnt%3D%28none%29%7C%7C%7Ctrm%3D%28none%29; _ga=GA1.1.1783439723.1697171473; _ga_BZ5WW4P6JQ=GS1.1.1697188687.2.1.1697188882.60.0.0; remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d={Cookie}; _clck=33dj59|2|fg1|0|1381; _clsk=3b0zk9|1697862838283|1|1|p.clarity.ms/collect; sbjs_udata=vst%3D13%7C%7C%7Cuip%3D%28none%29%7C%7C%7Cuag%3DMozilla%2F5.0%20%28Windows%20NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F118.0.0.0%20Safari%2F537.36%20Edg%2F118.0.2088.57; XSRF-TOKEN={XSRF_TOKEN}; pterodactyl_session={pterodactyl_session}", "Dnt": "1", "Origin": "https://panel.godlike.host", "Referer": "https://panel.godlike.host/server/{ID}", "Sec-Ch-Ua": "\"Chromium\";v=\"118\", \"Microsoft Edge\";v=\"118\", \"Not=A?Brand\";v=\"99\"", "Sec-Ch-Ua-Mobile": "?0", "Sec-Ch-Ua-Platform": "\"Windows\"", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57", "X-Requested-With": "XMLHttpRequest", # X-Xsrf-Token == XSRF_TOKEN,但是要使用unquote把URL编码转换成常规的 "X-Xsrf-Token": f"{unquote(XSRF_TOKEN)}" } response2 = requests.post(url2, headers=headers2, timeout=300) # 最大等待时间5分钟 if response2.status_code // 100 == 2: # 整除后为判断2开头(均为请求成功) print(f"请求成功,状态码为{response2.status_code}") else: print(f"请求失败,状态码为{response2.status_code}") print(f"错误信息: {response2.text}") ``` **相关教程:** [教你写个网页自动签到脚本](https://blog.csdn.net/qq_43687568/article/details/108447112) [简单实用的Chrom浏览器模拟POST请求方式](https://blog.csdn.net/I_peter/article/details/114015447)
造物者W
2024年3月12日 15:10
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码