某pt站点验证码签到分析

查看 95|回复 6
作者:hqt   
某PT站(空)签到脚本
思路
通过抓包获取到签到接口的请求参数,然后通过requests库发送请求,完成签到。
通过抓包可知,空签到大致分为了三步



通过带有cookies的请求发送到签到接口,使用ddddocr识别验证码,完成签到。
Github项目地址 https://github.com/ours1505/HDSkyAutoCheckin
使用方式
[ol]
  • 获取cookie
    在浏览器中打开签到页面,在开发者工具中查看请求头,找到cookie字段,将cookie复制到config.ini文件中。  
  • 运行脚本
    在终端中运行脚本,即可完成签到。(建议通过crontab定时执行)  
  • 获取签到结果
    在终端中查看签到结果。  
    [/ol]
    注意事项
    [ol]
  • 请确保文件中的cookie是正确的。  
  • 请勿频繁运行脚本,否则可能会被封禁。  
  • 请勿将cookie泄露给其他人。
    [/ol]
    [Python] 纯文本查看 复制代码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[key] = 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()

    验证码, 脚本

  • urdarling   

    是我理解的那个p站吗
    头号玩家   


    urdarling 发表于 2024-4-20 12:50
    是我理解的那个p站吗

    PT站不是P站
    xndell   

    楼主,求个邀请注册链接
    lemonhack27   

    太厉害了👍
    goblack   

    签到页面加cloudflare验证的比如ob就麻烦很多没法用这些脚本。
    jituidadada   

    求个本站的药,佬(mt,人人人或其他站可验证邮箱用户名
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部