Python实战:定时对网站进行签到

2022年7月26日 368点热度 0人点赞 0条评论

不瞒大家说,这个方法非常实用,一年前的代码至今仍然可以正常使用。但我今年年初时候买了个服务器,就寻思将这些本地电脑的定时任务都迁移到服务器上。这个时候再去回看之前的代码,使用Selenium作为我们的自动签到解决方案就显得有些“笨重”了。

我今天呢,要给大家分享一下升级款——request方式。

具体做法

首先打开我们需要签到的网站,使用Chrome浏览器的F12快捷键(或通过鼠标右键菜单“检查”)打开浏览器的开发者工具,点击 Network 查看所有加载的请求。

如下方动图所示,这个时候我们手动点击签到,就会发现出现了一个新的post请求(checkin),不出所料这便是我们签到的请求。

图片
▲点击签到抓取请求

而我们要做的事就是将该请求转换为Python代码,具体的方法也非常简单,详见之前的文章:每一个搞爬虫的人,都应该知道的神器!其中我们分享了两种可以一键将curl请求命令转Python请求代码的方法。

回到前文一开始发现的新请求,如下图所示,右键复制网络抓到的网络请求为cURL(bash)。

图片
▲复制cURL(bash)

然后打开网站:https://curl.trillworks.com/

图片

将刚刚复制的内容,填写该网站左侧,右侧同时生成了对应的 python requests 代码。

import requests

headers = {你自己的headers}
cookies = {你自己的cookies}

response = requests.post('https://*********.org/user/checkin', cookies=cookies, headers=headers)

剩下的事就很简单了,只需要每天定时执行该代码(模拟发起post签到请求)就可以实现该网站签到。

与之前的方法相比,最大的优势就是代码更精简、执行时间更短。selenium实现自动签到需要模拟浏览器进行加载、点击操作,即便用上显性等待等操作也只能控制到10秒左右.

这个签到代码除了增加定时功能,还可以增加通知功能(比如通过微信/飞书/钉钉来提醒自己签到成功+签到结果)。

图片

├──书籍《快学Python:自动化办公轻松实战》
│   ├── 9.3.4 案例 :Python 机器人定时发送消息
│   ├── 9.4.4 案例 :利用 Python 制作飞书机器人

书中的案例都是来源于真实需求,而我自己也确实是这么做的,定时任务可以这样写:

import schedule
import requests

headers = {你自己的headers}
cookies = {你自己的cookies}

def job():
    res = requests.post('https://*********.org/user/checkin', cookies=cookies, headers=headers)

schedule.every().day.at("09:50").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

比如今天给大家介绍的网站签到方法,已经在我的服务器正常运行半年多了,同时每天早上9.30我的飞书都能收到签到成功的提醒。

图片
55220Python实战:定时对网站进行签到

这个人很懒,什么都没留下

文章评论