52 自动签到 - xiaoxin01/Blog GitHub Wiki

还在每天访问网站或系统,手动签到吗?No...效率太低了,为啥不让电脑帮你自动签到?

签到系统

GitHub上有免费的签到系统,地址如下:

https://github.com/binux/qiandao

如果不想自己搭建签到系统,可以直接用作者搭建好的:

https://qiandao.today/

新建签到

首先在签到系统注册好账号并登陆。

签到需要网站的cookie信息,获取cookie信息的方法如下:

  1. 打开Chrome浏览器,按f12打开开发者工具
  2. 访问需要签到的网站并登陆
  3. 切换到console标签并输入:document.cookie,即可获取到cookie

然后可以在下面的地址查看已经建好的签到模板,如果想签到的系统已经有模板,可以直接使用

https://qiandao.today/tpls/public

点击模板右侧的“新建签到”,然后输入cookie即可建立自动签到功能。

没有现成的模板可以用?

可以参照下面链接建立签到模板:

https://github.com/binux/qiandao/blob/master/docs/har-howto.md

这里列举一个特殊的签到网站建立模板的方法,网站签到的方式需要回答一个问题,如下图:

查看签到提交的form表单需要的数据:

看最重要的值是questionid,接着分析如何从html中获取到form表单需要的值

<input type="hidden" name="questionid" value="598">

看起来要从上面这段string中去到特定name的input的value值,正则表达式如下:

(?<=name="questionid" value=")[1-9]\d*

这里用了正则表达式的反向肯定预查,详细描述参见下表

pattern description
(?:pattern) 非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
(?<=pattern) 非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pattern) 非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。这个地方不正确,有问题

在签到系统的模板界面,访问网站签到的Get请求,添加刚刚的questionid变量获取方式:

然后打开网站签到的Post请求,在Request标签的Request添加变量:

在预览标签添加签到成功或失败的判断:

保存之后签到模板就建立好了,可以通过模板签到: