Yuhang Zheng

网站自动签到的操作

N 人看过

前几天在网上找Steam VR游戏的时候,无意间找到了一个网站七星猫,然后发现上面的游戏基本上就是三个游戏币一个(一块钱一个游戏币),三十个游戏币可以直接VIP会员,全网站免费下载了,价格还不错。我购买了一个H3CVR的汉化版,下载之后游玩还可以,这个资源我已经找了很久了,网上基本上找不到免费的汉化的版本,哪怕是付费的也是相当的难找。

大概浏览了一下这个网站,上面的资源还是比较丰富的,PC和VR游戏都有很多,以后想找游戏的时候可以先在这里看看了。

在这个网站的侧边栏,我发现有签到的功能,每次签到给0.1个游戏币,这样算算每个月就能免费领一个游戏呢,10个月之后都能免费VIP了,想想白嫖还真是让人很兴奋呢。

不过每天如果手动签到也是太麻烦了,我想起来之前在网上找的用python写的什么值得买和glados的自动签到,代码我也看过,没什么难的,那何不自己做一个七星猫的自动签到脚本呢?

首先先看一下glados的自动签到脚本吧

import json
import requests
from requests import post

payload = "{\"token\":\"glados_network\"}"
headers = {
  'authority': 'glados.rocks',
  'accept': 'application/json, text/plain, */*',
  'dnt': '1',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36',
  'content-type': 'application/json;charset=UTF-8',
  'origin': 'https://glados.rocks',
  'sec-fetch-site': 'same-origin',
  'sec-fetch-mode': 'cors',
  'sec-fetch-dest': 'empty',
  'referer': 'https://glados.rocks/console/checkin',
  'accept-language': 'zh-CN,zh;q=0.9',
  'cookie': Cookie
}

if __name__ == '__main__':
    checkinUrl = 'https://glados.rocks/api/user/checkin'
    resp = requests.post(checkinUrl, headers=headers, data = payload)
    message = 'GLaDOS梯子签到 : \n\n' + json.loads(resp.text).get('message')
    print(message)

很简单不是么?点击签到按钮之后,也仅仅是向某个签到的url发送了一个特定的headers和data的数据而已,注意这里的data数据是一个json字符串。

那就仿照着这个来写一下七星猫的自动签到脚本吧,找一下它的签到的url和发送的数据的headers和data。

先进入七星猫的签到的页面,然后按下F12,召唤出无敌的浏览器开发人员工具,选中网络标签页。

image-20220125114526947

然后点击网页上的签到按钮,再看一下开发人员工具上出现了什么

image-20220125114652962

我们得到了点击签到按钮之后,它具体做的内容,点击第一个项目

image-20220125115027522

看到没有,我们看到了它签到的url和发送的数据的headers了,它发送的data在Payload标签页里

image-20220125115229592

简简单单,这不我们就获取了所有的我们想要的内容了么。

我同时发现了一个更加方便的东西,我们右键admin-ajax.php,然后在复制里面,我们竟然可以将这个发送的过程直接复制成cURL(bash)命令

image-20220125115059314

我得到的cURL(bash)命令如下:

curl 'https://www.qixingmao.net/wp-admin/admin-ajax.php' \
  -H 'authority: www.qixingmao.net' \
  -H 'sec-ch-ua: " Not;A Brand";v="99", "Microsoft Edge";v="97", "Chromium";v="97"' \
  -H 'dnt: 1' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69' \
  -H 'content-type: application/x-www-form-urlencoded; charset=UTF-8' \
  -H 'accept: application/json, text/javascript, */*; q=0.01' \
  -H 'x-requested-with: XMLHttpRequest' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'origin: https://www.qixingmao.net' \
  -H 'sec-fetch-site: same-origin' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-dest: empty' \
  -H 'referer: https://www.qixingmao.net/user/settings/' \
  -H 'accept-language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' \
  -H 'cookie: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  --data-raw 'action=epd_checkin' \
  --compressed

我们竟然直接得到了这一步操作的命令代码,亲测直接在linux上运行是完全没有问题的。当然如果想简单来实现脚本自动签到的话,直接把这个命令保存到.sh文件里面,直接用bash命令运行也可以,不过我们还是想用python脚本来实现它,那就改成下面这样就可以啦。

import json
import requests
from requests import post
from urllib import parse

# qixingmao网站的cookie
Cookie = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

payload = {"action":"epd_checkin"}
headers = {
  'authority': 'www.qixingmao.net',
  'sec-ch-ua': '" Not;A Brand";v="99", "Microsoft Edge";v="97", "Chromium";v="97"',
  'dnt': '1',
  'sec-ch-ua-mobile': '?0',
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62',
  'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
  'accept': 'application/json, text/javascript, */*; q=0.01',
  'x-requested-with': 'XMLHttpRequest',
  'sec-ch-ua-platform': 'Windows',
  'origin': 'https://www.qixingmao.net',
  'sec-fetch-site': 'same-origin',
  'sec-fetch-mode': 'cors',
  'sec-fetch-dest': 'empty',
  'referer': 'https://www.qixingmao.net/user/settings/',
  'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
  'cookie': Cookie
}

if __name__ == '__main__':
    checkinUrl = 'https://www.qixingmao.net/wp-admin/admin-ajax.php'
    resp = requests.post(checkinUrl, headers=headers, data=parse.urlencode(payload))
    message = '七星猫签到 : \n\n' + json.loads(resp.text).get('msg')
    print(message)

这里和上面的那个glados的自动签到脚本有点不一样的地方就是,七星猫网站自动签到发送的payloadx-www-form-urlencoded格式的,不是json格式的,所以我们需要先定义一个字典,然后使用**urllib.parse.urlencode()**函数对其进行POST请求参数的拼接。

from urllib import parse

payload = {"action":"epd_checkin"}

data=parse.urlencode(payload)

除此以外,其他的就一模一样啦,我们可以直接使用Python运行一下,没问题的话就放到crontab里面让它自己去慢慢运行啦!