现在很多网站都可以通过签到来获取积分,然后拿积分去兑换小礼品。每天手动签到难免有忘记的时候,下面就给大家介绍几种常见的自动化签到方案。
自动化签到的三种方式
- Python/C#/Java等语言拿到页面cookie或者token去请求对应的接口
- pyppeteer/selenium 操作浏览器模拟dom点击
- 浏览器插件方式实现
方案一 使用拿到cookie/token方式签到
这种方式需要提前获取页面cookie/token然后进行签到,电脑端可以使用F12查看,但是手机端页面没有F12就无法通过这种方式获取了,当然手机端页面可以使用Fiddler来抓取cookie/token。
data = {"xxx": "xxxx"}
cookie = 'xxxxxxx'
url = "xxxx"
def post(url, data={}, cookie=""):
cookie_json = {}
if cookie != "":
for c in cookie.split(";"):
str = c.split("=")
cookie_json[str[0]] = str[1]
r = requests.post(url, cookies=cookie_json, json=data, headers=headers)
if r.status_code == 200:
return json.loads(r.content)
return False
if post(url, data=data, cookie=cookie)
这种方案使用腾讯云函数,再配合定时执行,是真的香。
方案二 操作浏览器模拟dom点击
这种方式需要你在浏览器中登录一次,让浏览器记住你的cookie/token,然后通过自动化操作去模拟DOM点击事件,从而完成签到任务
import asyncio
from pyppeteer import launch
async def main():
browser = await launch(
headless=False,
ignoreDefaultArgs=["--enable-automation"],
args=["--no-sandbox", "--window-size=1366,848"],
) # 关闭无头浏览器
page = await browser.newPage()
await page.setViewport({"width": 1366, "height": 768})
await page.goto("xxxx") # 跳转到指定网页
# 这里就可以获取dom,执行dom的点击事件
await page.evaluate('window.scrollBy(0, document.body.scrollHeight)')
await page.waitFor(50 * 1000)
await browser.close() # 关闭
asyncio.get_event_loop().run_until_complete(main()) # 调用
方案三 浏览器插件方式实现
这种方式也必须在浏览器中登录。通过浏览器插件在页面中注入js脚本,在页面加载完成后执行模拟dom操作,或者直接发送ajax请求。页面中发送的ajax也可以配置带上cookie。
console.log('页面注入成功');
window.onload = function () {
setTimeout(() => {
let url = 'xxxxx';
//判断是不是当前也页面
if (window.location.href == url) {
setTimeout(() => {
let b = document.querySelector('.signin.btn')
if (b) {
b.click();
}
//或者
//httpPost(url, {'xx':'xxx'});
}, 10000);
}
}
}
//post请求
function httpPost(url, data) {
const xhr = new XMLHttpRequest();
xhr.open('post', url)
xhr.withCredentials = true; //很重要,没有这里请求就不会带上cookie
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(JSON.stringify(data));
xhr.onreadystatechange = function () {
if (xhr.status == 200 && xhr.readyState == 4) {
console.log(JSON.parse(xhr.responseText));
}
}
}
使用消息推送把签到结果发送到微信/QQ等第三方平台
配合消息推送定时把签到结果发送到第三方平台,每天看下消息就可以掌握具体签到情况,常用的消息推送有:
- WxPusher
- pushplus