Python requests库实现自动化签到脚本

想法缘起

  • 在某方势力的要求,最近每天都要早上在手机完成打卡,所以拾起python的知识想写个轻量脚本来实现自动签到打卡。

一点不必要的说明

  • 本次使用的脚本使用的是python的requests库,是一个HTTP库,可以完成一些http中用到的方法请求,如post、get、put和delete。http中的基本操作它都可以完成,用官方文档的介绍就是Requests is an elegant and simple HTTP library for Python, built for human beings.(Requests是一个优雅而简单的Python HTTP库,是为人类构建的)
  • 使用requests库而不使用selenium库:
    网上确实有许多自动签到或者打卡的教程会使用selenium库去实现,但是我觉得selenium库在完成这种签到任务过于臃肿,需要查找页面的元素、登录是要一个个put表单数据、模拟点击.click等等,最重要的是,使用selenium库需要安装相应浏览器的驱动,执行的时候会自动打开本机的浏览器,模拟人工操作,致命的是,完成这个简单脚本可能需要5到6秒,然而轻量快速性和使用requests库不能相比的
  • 但是吧,selenium库在即使不太懂http这些计算机网络知识的情况下也能很快上手,还是比较友好,网上教程也比较多,毕竟普通人能用的才是真正的好东西嘛(doge)

代码介绍

  • 封装成函数的代码,可实现多账号登录自动签到
import requests
import sys
import traceback

#填写登录url
login_url=""
#填写请求、点击的目标url
target_url=""
#登录时要用到的表单数据(json格式),可以在chrome浏览器中按F12,打开network面板查看(就是抓登陆后“login”包里面需要提交的数据)
form_data1={
    #例如:
    #"name": "xxxxxx",
    #"password": "xxxxxx"
}
header={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}

#主要http请求函数
def run(form_data):
    #登陆界面post表单数据(form_data),带上header防止被认定为机器人,否则可能会拒绝访问(封IP,过一段时间后才能访问)
    r=requests.post(login_url,data=form_data,headers=header)
    #print(r.status_code)
    #print(r.text)
    #print(r.cookies)
    #带着上面登录后返回的cookies去请求get一下签到、打卡或需要点击的url
    if r.status_code == 200:#在状态码为200(即成功登录)时发送请求
        res=requests.get(target_url,cookies=r.cookies,headers=header)
    #测试时打印状态码和响应文本
    #print(res.status_code)
    #print(res.text)

def main():
    run(form_data1)
    print("已处理第一份请求")

if __name__ == '__main__':
    #异常处理
    try:
        sys.exit(main())
    except Exception as e:
        traceback.print_exc()
  • 简单单账号脚本
import requests

login_url = ""
target_url = ""
form_data1 = {	}
header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}
r = requests.post(login_url, data=form_data1, headers=header)

res = requests.get(target_url, cookies=r.cookies, headers=header)

后记

  • 在上面的代码的http通信中,当我们实例化一个“r”的requests时,我们在登录网页post了表单数据和用于伪装的header后,网页服务器就会向这个实例返回(response)一些数据,其中就包括cookies等等其他信息,这样我们才能在下面的get请求带着这个刚刚在服务器返回的cookies去用登录后的身份去完成签到,不然,没有cookies就会显示未登录状态
  • 如果需要在登录后跨页面完成复杂操作,可以实例化一个session,保持会话状态去完成一系列操作
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值