From 2278006f274e51d1113d23ca39b9e963b5bd9cbb Mon Sep 17 00:00:00 2001
From: Hsury
Date: Sat, 4 Jul 2020 18:00:00 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=99=BB=E5=BD=95=E7=BB=84?=
=?UTF-8?q?=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.travis.yml | 2 +-
LICENSE | 2 +-
README.md | 4 ++--
bilibili.py | 14 +++++++++-----
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 7e492f9..a998667 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
if: 'tag IS blank'
env:
global:
- - TRAVIS_TAG=v2.2
+ - TRAVIS_TAG=v2.3
jobs:
include:
-
diff --git a/LICENSE b/LICENSE
index f9cdb9b..c74b89c 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018-2019 Hsury
+Copyright (c) 2018-2020 Hsury
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 29969f6..2fb8952 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
- Bilibili Toolkit -
-
+
@@ -20,7 +20,7 @@
|组件 |版本 |描述 |
|--------------------|---------------|------------------------------|
-|login |2019/12/22 |登录 |
+|login |2020/7/4 |登录 |
|get_user_info |2019/9/15 |获取用户信息 |
|set_privacy |2018/7/24 |修改隐私设置 |
|silver_to_coin |2018/8/8 |银瓜子兑换硬币 |
diff --git a/bilibili.py b/bilibili.py
index 801b2c4..e20755d 100644
--- a/bilibili.py
+++ b/bilibili.py
@@ -40,10 +40,10 @@
__author__ = "Hsury"
__email__ = "i@hsury.com"
__license__ = "SATA"
-__version__ = "2020.7.2"
+__version__ = "2020.7.4"
class Bilibili:
- app_key = "1d8b6e7d45233436"
+ app_key = "bca7e84c2d947ac6"
patterns = {
'video': {
'id': 1,
@@ -65,7 +65,7 @@ class Bilibili:
def __init__(self, https=True, queue=None):
self._session = requests.Session()
- self._session.headers.update({'User-Agent': "Mozilla/5.0 BiliDroid/5.51.1 (bbcallen@gmail.com)"})
+ self._session.headers.update({'User-Agent': "Mozilla/5.0 BiliDroid/6.4.0 (bbcallen@gmail.com) os/android model/M1903F11I mobi_app/android build/6040500 channel/bili innerVer/6040500 osVer/9.0.0 network/2"})
self.__queue = queue
self.get_cookies = lambda: self._session.cookies.get_dict(domain=".bilibili.com")
self.get_csrf = lambda: self.get_cookies().get("bili_jct", "")
@@ -123,7 +123,7 @@ def __push_to_queue(self, manufacturer, data):
@staticmethod
def calc_sign(param):
- salt = "560c52ccd288fed045859ed18bffd973"
+ salt = "60698ba2f68e01ce44738920a0ffe768"
sign_hash = hashlib.md5()
sign_hash.update(f"{param}{salt}".encode())
return sign_hash.hexdigest()
@@ -235,7 +235,11 @@ def get_key():
time.sleep(10)
break
elif response['code'] == -449:
- time.sleep(1)
+ self._log("服务繁忙, 尝试使用V3接口登录")
+ url = f"{self.protocol}://passport.bilibili.com/api/v3/oauth2/login"
+ param = f"access_key=&actionKey=appkey&appkey={Bilibili.app_key}&build=6040500&captcha=&challenge=&channel=bili&cookies=&device=phone&mobi_app=android&password={parse.quote_plus(base64.b64encode(rsa.encrypt(f'{key_hash}{self.password}'.encode(), pub_key)))}&permission=ALL&platform=android&seccode=&subid=1&ts={int(time.time())}&username={parse.quote_plus(self.username)}&validate="
+ payload = f"{param}&sign={self.calc_sign(param)}"
+ headers = {'Content-type': "application/x-www-form-urlencoded"}
response = self._requests("post", url, data=payload, headers=headers)
elif response['code'] == 0 and response['data']['status'] == 0:
for cookie in response['data']['cookie_info']['cookies']: