以标准的Discuz论坛签到为例
签到请求分为 4 部分
-
首先使用用户提供的 cookie 登陆,获取页面的 formhash 值,进入签到界面
-
将获取的 formhash 作为变量填入请求中,提交签到请求
-
重新进入签到界面,判断是否签到成功和获取签到情况
-
将签到情况提交到日志
补充部分信息使得模板具有纠错功能(判断签到是否成功、登陆是否成功、日志如何输出)
- 对于第一条请求,获取 formhash 的同时,应该判断当前登录信息/cookie是否有效。有些网站会直接报其他的状态码 400、300 等。此时设置 200作为判断信息即可。对于一律返回 200 的,必须要以其他形式判断,如文字。
- 对于第二条请求,此为签到请求。应该判断签到请求是否正确,是否是假签到(签到失败,但返回200状态码,然后模板认为签到成功)对于此类的需要加以文字辅助判断。
- 对于第三条请求,此为验证是否签到成功+获取积分步骤。自行对比签到前后网站内容变化以抓取辨识信息。对于Discuz来说,开始签到按钮为图片无法捕获,便用其他文字替代。同时自行寻找需要获取的信息以便提交日志。同样对于Discuz来说,文字颜色为积分捕获的最佳标识。
- 对于第四条请求,此为提交日志。提交后的日志可以在签到平台日志选项中查看到,最常用的为插入字符串替换,后续平台可能会上线本地转换功能,具体用法自行研究。
- 但凡是以 Authorization 作为认证标识的,大多都可在登录请求返回的包中找到该值,可能参数为 Token 。也就是说可以把定期会过期的 Authorization 转为用户名密码登录模板达到不过期效果(如果登陆时不需要验证码)
- Authorization 该值通常以 Bearer 开头,可以去头放到 JSON Web Tokens 尝试解密
- 部分模板订阅后使用网站cookie却提示未登录? 并不是模板问题而是网站对UA有验证,UA更换cookie会失效。请自行查看模板所使用的 User-Agent ,并使用所获得的UA去登录获取cookie。( Firefox 可使用 User-Agent Switcher and Manager 来设置特定的UA,其他浏览器同理。)