diff --git a/.github/workflows/run_52pojie_sign.yml b/.github/workflows/run_52pojie_sign.yml new file mode 100644 index 0000000..f7b8515 --- /dev/null +++ b/.github/workflows/run_52pojie_sign.yml @@ -0,0 +1,32 @@ +# This is a basic workflow to help you get started with Actions + +name: 'run 52pojie sign' + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + schedule: + - cron: '0 0 * * *' #早上8点执行 + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + run: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + - name: 安装python3 + run: sudo apt-get update && sudo apt-get install python3 python3-pip python3-bs4 && sudo pip install requests + + - name: 在脚本中填入用户参数 + run: | + sed -i 's/你的server酱SCKEY/${{ secrets.SCKEY }}/' ./52pojieCheckIn.py + sed -i 's/你的cookie/${{ secrets.cookie }}/' ./52pojieCheckIn.py + - name: 执行签到程序 + run: python3 ./52pojieCheckIn.py diff --git a/52pojieCheckIn.py b/52pojieCheckIn.py index a4fdb2b..44287fe 100644 --- a/52pojieCheckIn.py +++ b/52pojieCheckIn.py @@ -2,17 +2,19 @@ import requests from bs4 import BeautifulSoup +cookie = '' # 配置你的cookie +sckey = '' # 配置你的server酱SCKEY + def pushinfo(info,specific): headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36', 'ContentType': 'text/html' } - requests.session().get("https://sc.ftqq.com/你的server酱SCKEY.send?text=" + info + "&desp=" + specific,headers=headers) - + requests.session().get("https://sc.ftqq.com/"+sckey+".send?text=" + info + "&desp=" + specific,headers=headers) def main(*args): headers={ - 'Cookie': '你的cookie' , + 'Cookie': cookie, 'ContentType':'text/html;charset=gbk' } requests.session().get('https://www.52pojie.cn/home.php?mod=task&do=apply&id=2',headers=headers) diff --git a/BilibiliCheckIn.py b/BilibiliCheckIn.py index dbe3df8..1e1e775 100644 --- a/BilibiliCheckIn.py +++ b/BilibiliCheckIn.py @@ -6,13 +6,14 @@ from bs4 import BeautifulSoup from json.decoder import JSONDecodeError -cookies = '' # 配置你的cookie -bid = 'BV1PK4y1b7dt' # 配置需观看的视频BV号 -sckey = '' # 配置server酱SCKEY +cookie = '' # 配置你的cookie +sckey = '' # 配置你的server酱SCKEY +bid = 'BV1mD4y1U7z9' # 配置需观看的视频BV号 + +uid=re.match('(?<=dedeuserid=).*?(?=;)',cookie) +sid=re.match('(?<=sid=).*?(?=;)',cookie) +csrf=re.match('(?<=bili_jct=).*',cookie) -uid=re.match('(?<=dedeuserid=).*?(?=;)',cookies) -sid=re.match('(?<=sid=).*?(?=;)',cookies) -csrf=re.match('(?<=bili_jct=).*',cookies) # bv转av def bv_to_av(bv): @@ -49,7 +50,7 @@ def pushinfo(info,specific): def login(): headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36', - 'Cookie':cookies + 'Cookie':cookie } response = requests.session().get('http://api.bilibili.com/x/space/myinfo',headers=headers) rejson = json.loads(response.text) @@ -65,7 +66,7 @@ def login(): # 获取用户信息 def get_user_info(): headers = { - 'Cookie':cookies + 'Cookie':cookie } response = requests.session().get('http://api.bilibili.com/x/space/myinfo?jsonp=jsonp',headers=headers) rejson = json.loads(response.text) @@ -92,7 +93,7 @@ def get_user_info(): # 直播签到 def do_sign(): headers = { - 'Cookie':cookies + 'Cookie':cookie } response = requests.session().get('https://api.live.bilibili.com/sign/doSign',headers=headers) rejson = json.loads(response.text) @@ -110,7 +111,7 @@ def do_sign(): def watch(): aid=bv_to_av(bid) headers = { - 'Cookie':cookies + 'Cookie':cookie } response = requests.session().get('http://api.bilibili.com/x/web-interface/view?aid='+str(aid),headers=headers) rejson = json.loads(response.text) @@ -125,46 +126,30 @@ def watch(): payload = { 'aid': aid, 'cid': cid, - 'part': 1, - 'did': sid, - 'ftime': int(time.time()), 'jsonp': "jsonp", - 'lv': None, 'mid': uid, 'csrf': csrf, - 'stime': int(time.time()), + 'played_time': 0, + 'pause': False, + 'realtime': duration, + 'dt': 7, + 'play_type': 1, + 'start_ts': int(time.time()), } - response = requests.session().post('http://api.bilibili.com/x/report/click/h5',data=payload,headers=headers) + response = requests.session().post('http://api.bilibili.com/x/report/web/heartbeat',data=payload,headers=headers) rejson = json.loads(response.text) code = rejson['code'] if code == 0: - payload = { - 'aid': aid, - 'cid': cid, - 'jsonp': "jsonp", - 'mid': uid, - 'csrf': csrf, - 'played_time': 0, - 'pause': False, - 'realtime': duration, - 'dt': 7, - 'play_type': 1, - 'start_ts': int(time.time()), - } + time.sleep(5) + payload['played_time'] = duration - 1 + payload['play_type'] = 0 + payload['start_ts'] = int(time.time()) response = requests.session().post('http://api.bilibili.com/x/report/web/heartbeat',data=payload,headers=headers) rejson = json.loads(response.text) code = rejson['code'] if code == 0: - time.sleep(5) - payload['played_time'] = duration - 1 - payload['play_type'] = 0 - payload['start_ts'] = int(time.time()) - response = requests.session().post('http://api.bilibili.com/x/report/web/heartbeat',data=payload,headers=headers) - rejson = json.loads(response.text) - code = rejson['code'] - if code == 0: - print(f"av{aid}观看成功") - return True + print(f"av{aid}观看成功") + return True print(f"av{aid}观看失败 {response}") return False diff --git a/README.MD b/README.MD index 3f71478..a4f5b33 100644 --- a/README.MD +++ b/README.MD @@ -1,19 +1,58 @@ -# 简介 +# 项目简介 -腾讯云SCF(云函数)的python脚本,用于每天自动签到,一个是吾爱破解论坛的一个是哔哩哔哩的,作为我了解SCF的示例。 + 腾讯云SCF(云函数)、Github Actions的python脚本,用于每天自动签到,一个是吾爱破解论坛的一个是哔哩哔哩的,作为我了解SCF的示例。 -- **52pojieCheckIn.py** - - 吾爱破解论坛每日签到 (已完成) -- **BilibiliCheckIn.py** - - 每日直播签到赚银瓜子 (已完成) - - 每日观看视频赚经验 (已完成) - - 每日登录赚经验 (已完成) - - 每日分享赚经验 (未完成,网页端的api不能完成此任务,需客户端的api) - - 每日投币赚经验 (可以完成但没必要,不投,要白嫖经验!) -- **bs4.zip**: - - python3依赖包 +# 功能实现 -# 使用 +## 52pojieCheckIn +- 【已完成】每日签到 + +## BilibiliCheckIn +- 【已完成】每日直播签到赚银瓜子 +- 【已完成】每日观看视频赚经验 +- 【已完成】每日登录赚经验 + --- +- 【未完成】每日分享赚经验 + +> 客户端分享API: +>``` +>https://app.bilibili.com/x/v2/view/share/click +>https://app.bilibili.com/x/v2/view/share/complete +>``` +> 网页端分享API: +>``` +>https://api.bilibili.com/x/web-interface/share/add +>``` +> 这两个接口貌似都能完成`客户端分享视频`的任务,但是以`Cookie`登录却无法完成,可能需要`access_key`,那就必须使用账号密码登录来获取,而使用`账号密码`登录就容易出现验证,参考了多个项目的实现方式,发现都是针对图形验证码的,而我测试的时候要么是手机验证要么是滑块验证(就很玄学),这对于`SCF`来说不太适合。水平有限,如果你有适合`SCF`的解决方法麻烦提一个`issue`或`Pr`,感谢。 + +- 【未完成】每日投币赚经验 + +> 可以完成但没必要,不投,要白嫖经验!如果你需要的话,请使用`https://api.bilibili.com/x/web-interface/coin/add`这个接口,提交参数为`aid`、`multiply`、`cross_domain`、`csrf` + + +# 项目结构 + +| 文件 | 描述 | +| :----: | :----: | +| 52pojieCheckIn.py | 吾爱破解论坛 | +| BilibiliCheckIn.py | 哔哩哔哩 | +| bs4.zip | python3依赖包 | + +# 使用说明 + +## 注意事项 + + 吾爱破解论坛的签到有点奇怪,没研究是啥问题引起的,有时可以正常签到有时又提示:不是进行中的任务,可以尝试循环签到几次(反正我是这么解决的,哈哈哈),知道原因的同学麻烦发个Pr,感谢。 + +## 获取Cookie + + 打开浏览器,按F12,在Network处查找,还不会的话请自行百度! + +## Server酱 + + 可选,用于消息反馈,如需使用其他同类型产品,修改一下`pushinfo`函数就行。 官网:http://sc.ftqq.com/3.version + +## 腾讯云SCF(云函数) 1. 复制代码至`云函数`,保存文件名为`index.py` 2. `执行方法`设置为`index.main` @@ -21,7 +60,7 @@ 4. 在`层管理`绑定刚刚新建的`层` 5. 测试成功后在`触发管理`里设置触发器 -# 参考 +# 参考资料 感谢: