一:騰訊雲函數簽到
前言:0組公眾號發布了一個文庫的自動簽到腳本
最近從同學的簽到打卡腳本中知道了雲函數這種東西,可以在騰訊雲上定時部署代碼,很方便,所以想着改了一下雲函數0組簽到代碼
2:選擇python3.6和web靜態托管
3:把代碼復制上去
4:高級配置設置超時時間
5:觸發器定時觸發就可以了,當然你可以選擇每天的簽到時間
# 觸發器設置使用的是cron表達式 # 0 0 6 * * * * # 表示每天早上6點打卡,如果要改成8點打卡就改成 # 0 0 8 * * * * # 如果想改其他的,自行使用在線生成器:https://cron.qqe2.com/
6:部署測試成功即可
二:代碼
1:修改的代碼
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
def main_handler(event, context):
print("Received event: " + json.dumps(event, indent = 2))
import base64
import json
import os
def b64_image(image):
##base64轉image存儲成圖片
strs = image
imgdata = base64.b64decode(strs)
file = open('kyxabc.jpg', 'wb')
file.write(imgdata)
file.close()
def get_code_uuid():
##獲取image、UUID值
code_url = "https://wiki.0-sec.org/api/user/captchaImage"
code_image = requests.get(code_url)
json_data = json.loads(code_image.content)
base64_image = json_data['data']['img']
base64_uuid = json_data['data']['uuid']
b64_image(base64_image)
return base64_uuid
def base64_api():
#path = os.getcwd()
img_path = "/tmp/kyxabc.jpg"
print(img_path)
with open(img_path, 'rb') as f:
base64_data = base64.b64encode(f.read())
b64 = base64_data.decode()
data = {"username": "打碼平台賬號", "password": "平台密碼", "image": b64}##你的驗證碼api賬戶
result = json.loads(requests.post("http://api.ttshitu.com/base64", json=data).text)
if result['success']:
print("驗證碼識別成功")
return result["data"]["result"]
else:
print("驗證碼識別抽風了,再執行一遍吧")
def login(uuid):
username = "文庫賬號"
password = "文庫密碼"
headers = {'Accept': 'application/json, text/plain, */*','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36','Content-Type': 'application/json;charset=UTF-8','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'}
url = "https://wiki.0-sec.org/api/user/login"
login_data = {"account":username,"password":password,"code":base64_api(),"uuid":uuid}##字典
data_json = json.dumps(login_data)##轉json格式
logins = requests.post(url=url,headers=headers,data=data_json)
token = json.loads(logins.content)['data']['token']
return token
def sign(token):
headers = {'Zero-Token':token}
url = "https://wiki.0-sec.org/api/profile"
old_sign_data_json = requests.get(url=url,headers=headers)
old_sign_data_credit = json.loads(old_sign_data_json.content)['data']['credit']
url1 = "https://wiki.0-sec.org/api/front/user/sign"
requests.post(url=url1, headers=headers)
new_sign_data_json = requests.get(url=url, headers=headers)
new_sign_data_credit = json.loads(new_sign_data_json.content)['data']['credit']
if new_sign_data_credit > old_sign_data_credit:
print("簽到成功,您的當前積分為:",new_sign_data_credit)
else:
print("兄弟,你已經簽到過了,你的積分為:",new_sign_data_credit)
def main_handler(event, context):
main()
def main():
uuid = get_code_uuid()
tokens = login(uuid)
sign(tokens)
if __name__ == '__main__':
main_handler("","")
2:注意的幾點
(1):雲函數的寫空間在/tmp,所以需要注意生成的圖片文件需要的放在/tmp才能夠進行讀寫
(2):雲函數的函數格式有一定的要求,需要遵循官方文檔來操作
(3):api賬號識別次數需要購買,500次一元.可以簽到一年了0.0.
(4):注意固定公網ip,不然可能會有檢測什么的
三:參考博客:
官方文檔:
https://cloud.tencent.com/document/product/583
https://zhuanlan.zhihu.com/p/145865033