零組雲函數簽到


零組雲函數簽到

一:騰訊雲函數簽到

前言:0組公眾號發布了一個文庫的自動簽到腳本

https://github.com/0-Xyao/Zero-box/blob/main/%E6%96%87%E5%BA%93%E7%AD%BE%E5%88%B0%E8%84%9A%E6%9C%AC/auto-check.py

最近從同學的簽到打卡腳本中知道了雲函數這種東西,可以在騰訊雲上定時部署代碼,很方便,所以想着改了一下雲函數0組簽到代碼

1:首先先在騰訊雲申請雲函數,然后登錄

img

2:選擇python3.6和web靜態托管

img

3:把代碼復制上去

img

4:高級配置設置超時時間

img

 

5:觸發器定時觸發就可以了,當然你可以選擇每天的簽到時間

 

# 觸發器設置使用的是cron表達式 # 0 0 6 * * * * # 表示每天早上6點打卡,如果要改成8點打卡就改成 # 0 0 8 * * * * # 如果想改其他的,自行使用在線生成器:https://cron.qqe2.com/

img

 

 

img

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才能夠進行讀寫

img

(2):雲函數的函數格式有一定的要求,需要遵循官方文檔來操作

img

(3):api賬號識別次數需要購買,500次一元.可以簽到一年了0.0.

 

 (4):注意固定公網ip,不然可能會有檢測什么的

三:參考博客:

官方文檔:

https://cloud.tencent.com/document/product/583

https://zhuanlan.zhihu.com/p/145865033

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM