博主研发了一个洛谷自动打卡机。请勿滥用

代码

# codeing:utf8
# codeing:utf8
import requests
import json
import sys


def punch(cookie):
    return requests.get('https://www.luogu.com.cn/index/ajax_punch', headers={
        "Host": "www.luogu.com.cn",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv: 73.0) Gecko/20100101 Firefox/73.0",
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
        "Accept-Encoding": "gzip, deflate, br",
        "Connection": "keep-alive",
        "Referer": "https://www.luogu.com.cn/",
        "Cache-Control": "no-cache",
        "TE": "Trailers",
        "Cookie": cookie
    }).text


if __name__ == "__main__":
    print('脚本名为:', sys.argv[0], '\n')
    for i in range(1, len(sys.argv)):
        kkksc03 = punch(sys.argv[i])
        print(u'第', i, u'个打卡的结果:\n', kkksc03)
        try:
            ioi = json.loads(kkksc03)
            if ioi['code'] == 200:
                print('code =', ioi['code'], 'message =', ioi['more']['html'])
            else:
                print('code =', ioi['code'], 'message =', ioi['message'])
        except:
            print(u'错误:无法解码返回的json信息。')

食用方法

首先通过浏览器的开发者工具搞到你的cookie,然后运行这段脚本,在后面以字符串的形式添加你的cookie。下面是一个实例。设脚本文件名称为punch.py

没得包的请安装依赖。

pip install requests
python ./punch.py "__client_id=kkk03akioi; UM_distinctid=222333111444-chenzhe-114514-dfhka-88888888; _uid=40003; CNZZDATA22606=cnzz_eid%sdasdasdas" "__client_id=kkk03akioi; UM_distinctid=222333111444-chenzhe-114514-dfhka-88888888; _uid=40003; CNZZDATA22606=cnzz_eid%sdasdasdas"

上面的cookie仅供娱乐。

输出分析

如果程序运行正常。

  • 第一行输出脚本信息。
  • 以下,每行输出一个cookie的打卡情况。

    • code为$200$:打卡成功,后面接运势;
    • code为$201$:打卡失败,后面接原因;
    • code为其他值:打卡失败,后面接原因message,如无法阅读请到utf8环境下运行。如确实需要帮助请告知博主。

已知Bug

Python2

使用Python2的同学可能发现输出一些奇特字符,打卡也可能成功。

博主强烈建议大家升级到Python3。窝不想滋滋Python2

同理,安装了两个版本的Python的同学需要使用Python3运行脚本。

首次打卡会出锅

感谢来自ytha的报告。

会随机输出错误。但是打卡成功。窝马上修理。

Last modification:February 24th, 2020 at 10:31 pm
如果您觉得我的文章有用,给颗糖糖吧。