前言
京东618有个组队活动,有个核心环节是需要定时上线参加的,但因为懒,而且需要频繁上线,故使用云函数来自动参加。
简介
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助我们在无需购买和管理服务器的情况下运行代码。我们只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。
费用
资源使用量:40万GBs
调用次数:100万次
使用
1、登陆腾讯云,使用腾讯云函数
https://cloud.tencent.com/product/scf/
2、新建云函数,选择环境py2.7,空白模板
3、获取pt_key和pt_pin参数
1)电脑登陆m.jd.com
2)F12查看cookie
4、复制代码到编辑框并修改相关参数(pt_key和pt_pin)后保存
# coding: utf-8 import requests import time import datetime import sys import logging import urllib import json reload(sys) sys.setdefaultencoding('utf8') def start(): bomb_headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'cookie': 'pt_key=******; pt_pin=********;', 'User-Agent': 'jdapp;' } bomb_body = 'functionId=cakebaker_pk_getCakeBomb&body={}&client=wh5&clientVersion=1.0.0' bomb_state = requests.post('https://api.m.jd.com/client.action?functionId=cakebaker_pk_getCakeBomb', data=bomb_body, headers=bomb_headers).text logging.warning('炸弹状态:'+bomb_state) if 'timeStart' in bomb_state: bomb_state_json = json.loads(bomb_state) d_time = datetime.datetime.strptime(datetime.datetime.now().strftime("%Y-%m-%d")+bomb_state_json["data"]["result"]["timeStart"], '%Y-%m-%d%H:%M')+datetime.timedelta(hours=-8) logging.warning('距离开始时间还有: '+str((d_time-datetime.datetime.now()).seconds)+'秒') if (d_time-datetime.datetime.now()).seconds <= 60: while datetime.datetime.now() < d_time+datetime.timedelta(seconds=-2): logging.warning(datetime.datetime.now()+datetime.timedelta(hours=8)) time.sleep(1) while datetime.datetime.now() > d_time+datetime.timedelta(seconds=-2) and datetime.datetime.now() < d_time+datetime.timedelta(seconds=2): bomb = requests.post('https://api.m.jd.com/client.action?functionId=cakebaker_pk_getCakeBomb', data=bomb_body, headers=bomb_headers).text logging.warning(datetime.datetime.now()+datetime.timedelta(hours=8)) logging.warning('京东炸弹:'+bomb) if '成功' in bomb: s = json.loads(bomb) msg = urllib.quote(str(s["data"]["result"]["tip"])) groupLevel = urllib.quote(str(s["data"]["result"]["groupLevel"])) opponentLevel = urllib.quote(str(s["data"]["result"]["opponentLevel"])) requests.get('https://sc.ftqq.com/*********.send?text='+groupLevel+'+VS+'+opponentLevel) logging.warning('成功') break else: logging.warning(datetime.datetime.now()+datetime.timedelta(hours=8)) logging.warning('非活动时间!') else: logging.warning(datetime.datetime.now()+datetime.timedelta(hours=8)) logging.warning('非活动时间!') def main_handler(event, context): return start() if __name__ == '__main__': start()
PS:第38行为某酱的微信推送,若炸弹成功,将推送至微信,不会使用可自行删除整行。
5、进入函数配置页面,修改超时时间为60s
6、点击触发管理,选择添加触发条件为自定义时间触发
自定义时间触发:30 29,59 9-21 * * * *
解释:9点-21点,每个30分或整点自动查询,并抢炸弹。