某pt站点验证码签到分析
## 某PT站(空)签到脚本# 思路
通过抓包获取到签到接口的请求参数,然后通过requests库发送请求,完成签到。
通过抓包可知,空签到大致分为了三步
![第一步.png](https://img2.imgtp.com/2024/04/20/IBG1e94K.png)
![第二步.png](https://img2.imgtp.com/2024/04/20/TzfuFXiS.png)
![第三步.png](https://img2.imgtp.com/2024/04/20/iORluzj6.png)
通过带有cookies的请求发送到签到接口,使用ddddocr识别验证码,完成签到。
Github项目地址 https://github.com/ours1505/HDSkyAutoCheckin
## 使用方式
1. 获取cookie
在浏览器中打开签到页面,在开发者工具中查看请求头,找到cookie字段,将cookie复制到config.ini文件中。
2. 运行脚本
在终端中运行脚本,即可完成签到。(建议通过crontab定时执行)
3. 获取签到结果
在终端中查看签到结果。
## 注意事项
1. 请确保文件中的cookie是正确的。
2. 请勿频繁运行脚本,否则可能会被封禁。
3. 请勿将cookie泄露给其他人。
import configparser
from urllib.parse import urlencode
from ddddocr import DdddOcr
import requests
import logging
logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s')
def checkin():
# 实例化DdddOcr对象
ocr = DdddOcr()
config = configparser.ConfigParser(interpolation=None)
config.read('config.ini', encoding='utf-8')
ua = config['default']['UserAgent']
headers = {'User-Agent': ua, 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', }
logging.info(f"正在签到站点: hdsky")
cookies = config.get('hdsky', 'cookie').split('; ')
cookie_dict = {}
for pair in cookies:
key, value = pair.split('=', 1)
cookie_dict = value
while True:
payload = urlencode({'action': 'new'})
response = requests.post(f'https://hdsky.me/image_code_ajax.php', headers=headers, data=payload,
cookies=cookie_dict, verify=False)
if response.status_code == 200 and response.json()['success']:
code = response.json()['code']
response = requests.get(f'https://hdsky.me/image.php?action=regimage&imagehash={code}', headers=headers,
stream=True, verify=False)
if response.status_code == 200:
# 将响应内容保存为bytes对象
image_bytes = response.content
# 使用ocr对象识别图片中的验证码
recognized_text = ocr.classification(image_bytes)
logging.info(f'获取到验证码为:{recognized_text}')
payload = {'action': 'showup', 'imagehash': code, 'imagestring': recognized_text}
response = requests.post(f'https://hdsky.me/showup.php', headers=headers, data=payload,
cookies=cookie_dict, verify=False)
if response.json()['success']:
logging.info(f'站点hdsky.me签到成功')
break
elif response.json()['message'] == 'date_unmatch':
logging.info('站点已经签到')
break
else:
logging.info('验证码识别错误,重试')
if __name__ == '__main__':
checkin()
是我理解的那个p站吗 urdarling 发表于 2024-4-20 12:50
是我理解的那个p站吗
PT站不是P站 楼主,求个邀请注册链接 太厉害了👍 签到页面加cloudflare验证的比如ob就麻烦很多没法用这些脚本。
求个本站的药,佬(mt,人人人或其他站可验证邮箱用户名{:301_997:} 话说PT的考核真是头疼 哟好久没见你发帖了 请给个config.ini文件的格式
页:
[1]
2