From 51f3e2fbd77e1bf47c7c5ffe2c17c1246e7e67ad Mon Sep 17 00:00:00 2001 From: sanshuifeibing Date: 2020年8月25日 14:11:35 +0800 Subject: [PATCH 1/5] update readme.md --- BilibiliCheckIn.py | 11 +++++++++- README.MD | 54 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/BilibiliCheckIn.py b/BilibiliCheckIn.py index dbe3df8..f8b00f9 100644 --- a/BilibiliCheckIn.py +++ b/BilibiliCheckIn.py @@ -1,19 +1,28 @@ # -*- coding: utf8 -*- import requests +import hashlib import json import time import re +import rsa +import base64 +from urllib import parse from bs4 import BeautifulSoup from json.decoder import JSONDecodeError cookies = '' # 配置你的cookie -bid = 'BV1PK4y1b7dt' # 配置需观看的视频BV号 sckey = '' # 配置server酱SCKEY +bid = 'BV1PK4y1b7dt' # 配置需观看的视频BV号 + uid=re.match('(?<=dedeuserid=).*?(?=;)',cookies) sid=re.match('(?<=sid=).*?(?=;)',cookies) csrf=re.match('(?<=bili_jct=).*',cookies) + + + + # bv转av def bv_to_av(bv): headers={ diff --git a/README.MD b/README.MD index 3f71478..5eb6699 100644 --- a/README.MD +++ b/README.MD @@ -1,19 +1,45 @@ -# 简介 +# 项目简介 -腾讯云SCF(云函数)的python脚本,用于每天自动签到,一个是吾爱破解论坛的一个是哔哩哔哩的,作为我了解SCF的示例。 +  腾讯云SCF(云函数)的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依赖包 | + +# 使用说明 1. 复制代码至`云函数`,保存文件名为`index.py` 2. `执行方法`设置为`index.main` @@ -21,7 +47,7 @@ 4. 在`层管理`绑定刚刚新建的`层` 5. 测试成功后在`触发管理`里设置触发器 -# 参考 +# 参考资料 感谢: From cc278df7c7ac7bcf278b63f5c5f9e186e06735f9 Mon Sep 17 00:00:00 2001 From: sanshuifeibing Date: 2020年8月25日 14:16:38 +0800 Subject: [PATCH 2/5] upadte code --- BilibiliCheckIn.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/BilibiliCheckIn.py b/BilibiliCheckIn.py index f8b00f9..a1ba882 100644 --- a/BilibiliCheckIn.py +++ b/BilibiliCheckIn.py @@ -1,12 +1,8 @@ # -*- coding: utf8 -*- import requests -import hashlib import json import time import re -import rsa -import base64 -from urllib import parse from bs4 import BeautifulSoup from json.decoder import JSONDecodeError @@ -14,15 +10,11 @@ sckey = '' # 配置server酱SCKEY bid = 'BV1PK4y1b7dt' # 配置需观看的视频BV号 - uid=re.match('(?<=dedeuserid=).*?(?=;)',cookies) sid=re.match('(?<=sid=).*?(?=;)',cookies) csrf=re.match('(?<=bili_jct=).*',cookies) - - - # bv转av def bv_to_av(bv): headers={ From a43e12a62e6af41b0e29b5c4da2a29bfbaefee3f Mon Sep 17 00:00:00 2001 From: dc Date: 2020年8月25日 16:38:08 +0800 Subject: [PATCH 3/5] update readme.md --- README.MD | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 5eb6699..7287f71 100644 --- a/README.MD +++ b/README.MD @@ -20,7 +20,7 @@ >``` >  网页端分享API: >``` ->https//api.bilibili.com/x/web-interface/share/add +>https://api.bilibili.com/x/web-interface/share/add >``` >  这两个接口貌似都能完成`客户端分享视频`的任务,但是以`Cookie`登录却无法完成,可能需要`access_key`,那就必须使用账号密码登录来获取,而使用`账号密码`登录就容易出现验证,参考了多个项目的实现方式,发现都是针对图形验证码的,而我测试的时候要么是手机验证要么是滑块验证(就很玄学),这对于`SCF`来说不太适合。水平有限,如果你有适合`SCF`的解决方法麻烦提一个`issue`或`Pr`,感谢。 @@ -41,6 +41,16 @@ # 使用说明 +## 获取Cookie + +  打开浏览器,按F12,在Network处查找,还不会的话请自行百度! + +## Server酱 + +  官网:http://sc.ftqq.com/3.version + +## 腾讯云SCF(云函数) + 1. 复制代码至`云函数`,保存文件名为`index.py` 2. `执行方法`设置为`index.main` 3. 新建`层`,上传依赖包`bs4` From f38e450922af4805838d46efb17b8cb59569a381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E8=BE=B0?= <67217225+happy888888@users.noreply.github.com> Date: 2020年8月26日 23:17:26 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0github=20Actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用github Actions实现每天自动运行52pojie打卡程序 --- .github/workflows/run_52pojie_sign.yml | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/run_52pojie_sign.yml 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 From 1e8e40d51bf788c3c2260643de11a101fe7097c9 Mon Sep 17 00:00:00 2001 From: sanshuifeibing Date: 2021年6月27日 15:18:26 +0800 Subject: [PATCH 5/5] update --- 52pojieCheckIn.py | 8 +++--- BilibiliCheckIn.py | 62 +++++++++++++++++----------------------------- README.MD | 11 +++++--- 3 files changed, 35 insertions(+), 46 deletions(-) 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 a1ba882..1e1e775 100644 --- a/BilibiliCheckIn.py +++ b/BilibiliCheckIn.py @@ -6,13 +6,13 @@ from bs4 import BeautifulSoup from json.decoder import JSONDecodeError -cookies = '' # 配置你的cookie -sckey = '' # 配置server酱SCKEY -bid = 'BV1PK4y1b7dt' # 配置需观看的视频BV号 +cookie = '' # 配置你的cookie +sckey = '' # 配置你的server酱SCKEY +bid = 'BV1mD4y1U7z9' # 配置需观看的视频BV号 -uid=re.match('(?<=dedeuserid=).*?(?=;)',cookies) -sid=re.match('(?<=sid=).*?(?=;)',cookies) -csrf=re.match('(?<=bili_jct=).*',cookies) +uid=re.match('(?<=dedeuserid=).*?(?=;)',cookie) +sid=re.match('(?<=sid=).*?(?=;)',cookie) +csrf=re.match('(?<=bili_jct=).*',cookie) # bv转av @@ -50,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) @@ -66,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) @@ -93,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) @@ -111,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) @@ -126,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 7287f71..a4f5b33 100644 --- a/README.MD +++ b/README.MD @@ -1,8 +1,9 @@ # 项目简介 -  腾讯云SCF(云函数)的python脚本,用于每天自动签到,一个是吾爱破解论坛的一个是哔哩哔哩的,作为我了解SCF的示例。 +  腾讯云SCF(云函数)、Github Actions的python脚本,用于每天自动签到,一个是吾爱破解论坛的一个是哔哩哔哩的,作为我了解SCF的示例。 # 功能实现 + ## 52pojieCheckIn - 【已完成】每日签到 @@ -29,8 +30,6 @@>  可以完成但没必要,不投,要白嫖经验!如果你需要的话,请使用`https://api.bilibili.com/x/web-interface/coin/add`这个接口,提交参数为`aid`、`multiply`、`cross_domain`、`csrf` - - # 项目结构 | 文件 | 描述 | @@ -41,13 +40,17 @@ # 使用说明 +## 注意事项 + +  吾爱破解论坛的签到有点奇怪,没研究是啥问题引起的,有时可以正常签到有时又提示:不是进行中的任务,可以尝试循环签到几次(反正我是这么解决的,哈哈哈),知道原因的同学麻烦发个Pr,感谢。 + ## 获取Cookie   打开浏览器,按F12,在Network处查找,还不会的话请自行百度! ## Server酱 -  官网:http://sc.ftqq.com/3.version +  可选,用于消息反馈,如需使用其他同类型产品,修改一下`pushinfo`函数就行。 官网:http://sc.ftqq.com/3.version ## 腾讯云SCF(云函数)

AltStyle によって変換されたページ (->オリジナル) /