From e0ea072daebc346f7219e37808896194e7ffdd60 Mon Sep 17 00:00:00 2001 From: Hsury Date: Tue, 28 Aug 2018 23:45:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=B9=E5=B9=95=E5=8F=91?= =?UTF-8?q?=E9=80=81=E7=BB=84=E4=BB=B6=E5=B9=B6=E6=8F=90=E4=BE=9B=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E8=87=B3HTTP=20API=E7=9A=84=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + bilibili.py | 122 +++++++++++++++++++++++++++++++++++--------------- bilibili.toml | 10 ++++- 3 files changed, 95 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index a8be0be..57e6227 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ |favour |2018/6/20 |收藏 | |share |2018/6/20 |分享 | |follow |2018/7/8 |关注 | +|danmakuPost |2018/8/28 |弹幕发送 | |commentLike |2018/6/27 |评论点赞 | |commentPost |2018/8/26 |评论发表 | |dynamicLike |2018/6/29 |动态点赞 | diff --git a/bilibili.py b/bilibili.py index 6102a86..f5d724e 100644 --- a/bilibili.py +++ b/bilibili.py @@ -25,7 +25,7 @@ class Bilibili(): appKey = "1d8b6e7d45233436" ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" - def __init__(self): + def __init__(self, https=True): self.cookie = "" self.csrf = "" self.uid = "" @@ -41,6 +41,7 @@ def __init__(self): 'join': "", 'level': 0, 'nickname': ""} + self.protocol = "https" if https else "http" self.proxy = None self.proxyPool = set() @@ -75,8 +76,8 @@ def addProxy(self, proxy): def setProxy(self): proxy = random.sample(self.proxyPool, 1)[0] - self.proxy = {'https': f"https://{proxy}"} - self.log(f"使用代理: {proxy}") + self.proxy = {self.protocol: f"{self.protocol}://{proxy}"} + self.log(f"使用{self.protocol.upper()}代理: {proxy}") def getSign(self, param): salt = "560c52ccd288fed045859ed18bffd973" @@ -104,7 +105,7 @@ def importCredential(self, pairs): # 登录 def login(self): def useCookie(): - url = "https://api.bilibili.com/x/space/myinfo" + url = f"{self.protocol}://api.bilibili.com/x/space/myinfo" headers = {'Cookie': self.cookie, 'Host': "api.bilibili.com", 'User-Agent': Bilibili.ua} @@ -119,21 +120,21 @@ def useCookie(): def useToken(): param = f"access_key={self.accessToken}&appkey={Bilibili.appKey}&ts={int(time.time())}" - url = f"https://passport.bilibili.com/api/v2/oauth2/info?{param}&sign={self.getSign(param)}" + url = f"{self.protocol}://passport.bilibili.com/api/v2/oauth2/info?{param}&sign={self.getSign(param)}" response = self.get(url) if response and response.get("code") == 0: self.uid = response['data']['mid'] self.log(f"Token仍有效, 有效期至{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() + int(response['data']['expires_in'])))}") if not self.cookie: - param = f"access_key={self.accessToken}&appkey={Bilibili.appKey}&gourl=https%3A%2F%2Faccount.bilibili.com%2Faccount%2Fhome&ts={int(time.time())}" - url = f"https://passport.bilibili.com/api/login/sso?{param}&sign={self.getSign(param)}" + param = f"access_key={self.accessToken}&appkey={Bilibili.appKey}&gourl={self.protocol}%3A%2F%2Faccount.bilibili.com%2Faccount%2Fhome&ts={int(time.time())}" + url = f"{self.protocol}://passport.bilibili.com/api/login/sso?{param}&sign={self.getSign(param)}" session = requests.session() session.get(url) self.importCredential(session.cookies.get_dict()) return True else: self.log(f"Token已失效") - url = "https://passport.bilibili.com/api/v2/oauth2/refresh_token" + url = f"{self.protocol}://passport.bilibili.com/api/v2/oauth2/refresh_token" param = f"access_key={self.accessToken}&appkey={Bilibili.appKey}&refresh_token={self.refreshToken}&ts={int(time.time())}" data = f"{param}&sign={self.getSign(param)}" headers = {'Content-type': "application/x-www-form-urlencoded"} @@ -153,7 +154,7 @@ def useToken(): return False def usePassword(): - url = "https://passport.bilibili.com/api/oauth2/getKey" + url = f"{self.protocol}://passport.bilibili.com/api/oauth2/getKey" data = {'appkey': Bilibili.appKey, 'sign': self.getSign(f"appkey={Bilibili.appKey}")} response = self.post(url, data=data) @@ -164,7 +165,7 @@ def usePassword(): self.log(f"Key获取失败 {response}") return False while True: - url = "https://passport.bilibili.com/api/v2/oauth2/login" + url = f"{self.protocol}://passport.bilibili.com/api/v2/oauth2/login" param = f"appkey={Bilibili.appKey}&password={parse.quote_plus(base64.b64encode(rsa.encrypt(f'{keyHash}{self.password}'.encode(), pubKey)))}&username={parse.quote_plus(self.username)}" data = f"{param}&sign={self.getSign(param)}" headers = {'Content-type': "application/x-www-form-urlencoded"} @@ -173,7 +174,7 @@ def usePassword(): while True: if response['code'] == -105: sid = "".join(random.choices(string.ascii_lowercase + string.digits, k=8)) - url = "https://passport.bilibili.com/captcha" + url = f"{self.protocol}://passport.bilibili.com/captcha" headers = {'Cookie': f"sid={sid}", 'Host': "passport.bilibili.com", 'User-Agent': Bilibili.ua} @@ -184,7 +185,7 @@ def usePassword(): captcha = response.decode() if response and len(response) == 5 else None if captcha: self.log(f"验证码识别结果: {captcha}") - url = "https://passport.bilibili.com/api/v2/oauth2/login" + url = f"{self.protocol}://passport.bilibili.com/api/v2/oauth2/login" param = f"appkey={Bilibili.appKey}&captcha={captcha}&password={parse.quote_plus(base64.b64encode(rsa.encrypt(f'{keyHash}{self.password}'.encode(), pubKey)))}&username={parse.quote_plus(self.username)}" data = f"{param}&sign={self.getSign(param)}" headers = {'Content-type': "application/x-www-form-urlencoded", @@ -226,7 +227,7 @@ def usePassword(): # 获取用户信息 def query(self): - url = "https://api.bilibili.com/x/space/myinfo?jsonp=jsonp" + url = f"{self.protocol}://api.bilibili.com/x/space/myinfo?jsonp=jsonp" headers = {'Cookie': self.cookie, 'Host': "api.bilibili.com", 'Referer': f"https://space.bilibili.com/{self.uid}/", @@ -261,7 +262,7 @@ def setPrivacy(self, showFavourite=None, showBangumi=None, showTag=None, showRew 'coins_video': showReward, 'user_info': showInfo, 'played_game': showGame} - url = f"https://space.bilibili.com/ajax/settings/getSettings?mid={self.uid}" + url = f"{self.protocol}://space.bilibili.com/ajax/settings/getSettings?mid={self.uid}" headers = {'Cookie': self.cookie, 'Host': "space.bilibili.com", 'Referer': f"https://space.bilibili.com/{self.uid}/", @@ -274,7 +275,7 @@ def setPrivacy(self, showFavourite=None, showBangumi=None, showTag=None, showRew else: self.log(f"隐私设置获取失败 {response}") return False - url = "https://space.bilibili.com/ajax/settings/setPrivacy" + url = f"{self.protocol}://space.bilibili.com/ajax/settings/setPrivacy" headers = {'Cookie': self.cookie, 'Host': "space.bilibili.com", 'Origin': "https://space.bilibili.com", @@ -301,7 +302,7 @@ def silver2Coins(self, app=True, pc=False): # pc = PC通道 if app: param = f"access_key={self.accessToken}&appkey={Bilibili.appKey}&ts={int(time.time())}" - url = f"https://api.live.bilibili.com/AppExchange/silver2coin?{param}&sign={self.getSign(param)}" + url = f"{self.protocol}://api.live.bilibili.com/AppExchange/silver2coin?{param}&sign={self.getSign(param)}" headers = {'Cookie': self.cookie} response = self.get(url, headers=headers) if response and response.get("code") == 0: @@ -309,7 +310,7 @@ def silver2Coins(self, app=True, pc=False): else: self.log(f"银瓜子兑换硬币(APP通道)失败 {response}") if pc: - url = "https://api.live.bilibili.com/pay/v1/Exchange/silver2coin" + url = f"{self.protocol}://api.live.bilibili.com/pay/v1/Exchange/silver2coin" data = {'platform': "pc", 'csrf_token': self.csrf} headers = {'Cookie': self.cookie, @@ -326,14 +327,14 @@ def silver2Coins(self, app=True, pc=False): # 观看 def watch(self, aid): # aid = 稿件av号 - url = f"https://www.bilibili.com/widget/getPageList?aid={aid}" + url = f"{self.protocol}://api.bilibili.com/x/web-interface/view?aid={aid}" response = self.get(url) if response: - cid = response[0]['cid'] + cid = response['data']['cid'] else: - self.log("cid解析失败") + self.log(f"av{aid}信息解析失败") return False - url = "https://api.bilibili.com/x/report/web/heartbeat" + url = f"{self.protocol}://api.bilibili.com/x/report/web/heartbeat" data = {'aid': aid, 'cid': cid, 'mid': self.uid, @@ -359,7 +360,7 @@ def watch(self, aid): # 好评 def like(self, aid): # aid = 稿件av号 - url = "https://api.bilibili.com/x/web-interface/archive/like" + url = f"{self.protocol}://api.bilibili.com/x/web-interface/archive/like" data = {'aid': aid, 'like': 1, 'csrf': self.csrf} @@ -380,7 +381,7 @@ def like(self, aid): def reward(self, aid, double=True): # aid = 稿件av号 # double = 双倍投币 - url = "https://api.bilibili.com/x/web-interface/coin/add" + url = f"{self.protocol}://api.bilibili.com/x/web-interface/coin/add" data = {'aid': aid, 'multiply': 2 if double else 1, 'cross_domain': "true", @@ -401,7 +402,7 @@ def reward(self, aid, double=True): # 收藏 def favour(self, aid): # aid = 稿件av号 - url = "https://api.bilibili.com/x/v2/fav/folder" + url = f"{self.protocol}://api.bilibili.com/x/v2/fav/folder" headers = {'Cookie': self.cookie, 'Host': "api.bilibili.com", 'User-Agent': Bilibili.ua} @@ -412,7 +413,7 @@ def favour(self, aid): self.log("fid获取失败") return False time.sleep(1) - url = "https://api.bilibili.com/x/v2/fav/video/add" + url = f"{self.protocol}://api.bilibili.com/x/v2/fav/video/add" data = {'aid': aid, 'fid': fid, 'jsonp': "jsonp", @@ -433,7 +434,7 @@ def favour(self, aid): # 分享 def share(self, aid): # aid = 稿件av号 - url = "https://api.bilibili.com/x/web-interface/share/add" + url = f"{self.protocol}://api.bilibili.com/x/web-interface/share/add" data = {'aid': aid, 'jsonp': "jsonp", 'csrf': self.csrf} @@ -454,7 +455,7 @@ def share(self, aid): def follow(self, mid, secret=False): # mid = 被关注用户UID # secret = 悄悄关注 - url = "https://api.bilibili.com/x/relation/modify" + url = f"{self.protocol}://api.bilibili.com/x/relation/modify" data = {'fid': mid, 'act': 3 if secret else 1, 're_src': 11, @@ -473,6 +474,50 @@ def follow(self, mid, secret=False): self.log(f"用户{mid}{'悄悄' if secret else ''}关注失败 {response}") return False + # 弹幕发送 + def danmakuPost(self, aid, message, moment=-1): + # aid = 稿件av号 + # message = 弹幕内容 + # moment = 弹幕发送时间 + url = f"{self.protocol}://api.bilibili.com/x/web-interface/view?aid={aid}" + response = self.get(url) + if response: + oid = response['data']['cid'] + duration = response['data']['duration'] + else: + self.log(f"av{aid}信息解析失败") + return False + while True: + url = f"{self.protocol}://api.bilibili.com/x/v2/dm/post" + data = {'type': 1, + 'oid': oid, + 'msg': message, + 'aid': aid, + 'progress': int(moment * 1000) if moment != -1 else random.randint(0, duration * 1000), + 'color': 16777215, + 'fontsize': 25, + 'pool': 0, + 'mode': 1, + 'rnd': int(time.time() * 1000000), + 'plat': 1, + 'csrf': self.csrf} + headers = {'Cookie': self.cookie, + 'Host': "api.bilibili.com", + 'Origin': "https://www.bilibili.com", + 'Referer': f"https://www.bilibili.com/video/av{aid}", + 'User-Agent': Bilibili.ua} + response = self.post(url, data=data, headers=headers) + if response and response.get("code") is not None: + if response['code'] == 0: + self.log(f"av{aid}弹幕\"{message}\"发送成功") + return True + elif response['code'] == 36703: + self.log(f"av{aid}弹幕发送频率过快, 10秒后重试") + time.sleep(10) + else: + self.log(f"av{aid}弹幕\"{message}\"发送失败 {response}") + return False + # 评论点赞 def commentLike(self, otype, oid, rpid): # otype = 作品类型 @@ -489,7 +534,7 @@ def commentLike(self, otype, oid, rpid): if patterns.get(otype) is None: self.log("不支持的作品类型") return False - url = "https://api.bilibili.com/x/v2/reply/action" + url = f"{self.protocol}://api.bilibili.com/x/v2/reply/action" data = {'oid': oid, 'type': patterns[otype]['id'], 'rpid': rpid, @@ -529,7 +574,7 @@ def commentPost(self, otype, oid, message, floor=0, critical=1): self.log("不支持的作品类型") return False while True: - url = f"https://api.bilibili.com/x/v2/reply?jsonp=jsonp&pn=1&type={patterns[otype]['id']}&oid={oid}&sort=0&_={int(time.time())}" + url = f"{self.protocol}://api.bilibili.com/x/v2/reply?jsonp=jsonp&pn=1&type={patterns[otype]['id']}&oid={oid}&sort=0&_={int(time.time())}" headers = {'Host': "api.bilibili.com", 'Referer': f"{patterns[otype]['prefix']}{oid}", 'User-Agent': Bilibili.ua} @@ -542,7 +587,7 @@ def commentPost(self, otype, oid, message, floor=0, critical=1): time.sleep(min(3, max(0, (deltaFloor - 10) * 0.1))) elif deltaFloor > 0: self.log(f"当前评论楼层数为{currentFloor}, 开始提交评论") - url = "https://api.bilibili.com/x/v2/reply/add" + url = f"{self.protocol}://api.bilibili.com/x/v2/reply/add" data = {'oid': oid, 'type': patterns[otype]['id'], 'message': message, @@ -575,7 +620,7 @@ def commentPost(self, otype, oid, message, floor=0, critical=1): # 动态点赞 def dynamicLike(self, did): # did = 动态ID - url = "https://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/thumb" + url = f"{self.protocol}://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/thumb" data = {'uid': self.uid, 'dynamic_id': did, 'up': 1, @@ -598,7 +643,7 @@ def dynamicLike(self, did): def dynamicRepost(self, did, message): # did = 动态ID # message = 转发内容 - url = "https://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/repost" + url = f"{self.protocol}://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/repost" data = {'uid': self.uid, 'dynamic_id': did, 'content': message, @@ -696,7 +741,7 @@ def mallAssist(self, mid): # mid = 被助力用户UID if not (self.info['nickname'] and self.info['face']): self.query() - url = "https://space.bilibili.com/ajax/member/GetInfo" + url = f"{self.protocol}://space.bilibili.com/ajax/member/GetInfo" data = f"mid={mid}&csrf=" headers = {'Content-Type': "application/x-www-form-urlencoded", 'Host': "space.bilibili.com", @@ -798,7 +843,7 @@ def mallPrize(self): # 小米6X抢F码活动抽奖 def mi6XLottery(self): - url = "https://www.bilibili.com/matsuri/get/act/mylotterytimes?act_id=159" + url = f"{self.protocol}://www.bilibili.com/matsuri/get/act/mylotterytimes?act_id=159" headers = {'Cookie': self.cookie, 'Host': "www.bilibili.com", 'Referer': "https://www.bilibili.com/blackboard/activity-mixchuyin.html", @@ -806,7 +851,7 @@ def mi6XLottery(self): response = self.get(url, headers=headers) attempts = 0 while True: - url = "https://www.bilibili.com/matsuri/index?act_id=159" + url = f"{self.protocol}://www.bilibili.com/matsuri/index?act_id=159" headers = {'Cookie': self.cookie, 'Host': "www.bilibili.com", 'Origin': "https://www.bilibili.com", @@ -821,7 +866,7 @@ def mi6XLottery(self): attempts += 1 self.log(f"第{attempts}次抽奖, 未中奖") elif response['code'] == -30011: - url = "https://www.bilibili.com/matsuri/add/lottery/times?act_id=159" + url = f"{self.protocol}://www.bilibili.com/matsuri/add/lottery/times?act_id=159" headers = {'Cookie': self.cookie, 'Host': "www.bilibili.com", 'Referer': "https://www.bilibili.com/blackboard/activity-mixchuyin.html", @@ -877,7 +922,7 @@ def decompress(file, remove=True): def wrapper(arg): addInterval = lambda func, delay: time.sleep(delay) config, account = arg['config'], arg['account'] - instance = Bilibili() + instance = Bilibili(config['proxy']['https']) if config['proxy']['enable']: instance.addProxy(config['proxy']['pool']) instance.setProxy() @@ -902,6 +947,9 @@ def wrapper(arg): threads.append(threading.Thread(target=lambda: [addInterval(instance.share(aid), 1) for aid in config['share']['aid']])) if config['follow']['enable']: threads.append(threading.Thread(target=lambda: [addInterval(instance.follow(mid, secret), 1) for mid, secret in zip(config['follow']['mid'], config['follow']['secret'])])) + if config['danmakuPost']['enable']: + for danmaku in zip(config['danmakuPost']['aid'], config['danmakuPost']['message'], config['danmakuPost']['moment']): + threads.append(threading.Thread(target=instance.danmakuPost, args=(danmaku[0], danmaku[1], danmaku[2]))) if config['commentLike']['enable']: threads.append(threading.Thread(target=lambda: [addInterval(instance.commentLike(otype, oid, rpid), 1) for otype, oid, rpid in zip(config['commentLike']['otype'], config['commentLike']['oid'], config['commentLike']['rpid'])])) if config['commentPost']['enable']: diff --git a/bilibili.toml b/bilibili.toml index 8970c40..e3393f4 100644 --- a/bilibili.toml +++ b/bilibili.toml @@ -13,7 +13,8 @@ account = """ # 代理设置 [proxy] enable = true # 开关 -pool = ["118.24.61.22:3128", "221.204.48.167:3128", "113.200.56.13:8010", "119.27.177.169:80", "221.7.255.168:8080", "221.7.255.168:80", "223.93.172.248:3128", "47.94.241.237:3128", "114.215.95.188:3128", "39.135.35.19:80", "116.62.194.248:3128","39.106.160.36:3128", "125.62.26.197:3128", "218.60.8.98:3129", "218.60.8.83:3129", "39.135.35.16:80", "47.96.239.158:3128", "118.89.38.21:8080", "218.207.212.86:80", "180.101.146.174:3128", "120.78.215.151:808", "39.135.35.18:80", "159.138.21.53:3128", "36.33.25.226:808", "119.63.99.205:3128", "35.185.179.37:3128", "183.62.196.10:3128", "154.8.182.226:3128", "112.115.57.20:3128", "35.200.84.98:3128", "118.31.223.194:3128", "52.230.0.119:3128", "121.42.235.174:9999", "39.104.175.142:3128", "140.143.96.216:80", "121.156.109.92:8080", "119.196.18.50:8080", "43.239.178.90:8888", "101.236.41.207:3128", "118.27.29.54:3128", "118.190.210.227:3128", "194.67.201.106:3128", "94.242.58.14:10010", "159.89.22.167:8080", "118.31.0.140:3128", "35.202.230.186:3128", "94.242.58.108:1448", "5.189.162.175:3128", "185.22.174.69:1448", "212.227.161.125:3128", "188.165.164.9:3128", "94.242.58.108:10010", "178.128.46.132:8080", "178.62.95.149:8080", "185.216.35.170:3128", "203.150.192.158:42320", "206.125.41.135:80", "203.150.192.86:46200", "203.150.192.162:54516", "112.140.186.70:8118", "185.22.172.94:1448", "91.121.108.164:3128", "178.62.51.192:8080", "46.21.74.130:8080", "46.101.188.94:8080", "95.87.255.120:8080", "109.205.201.3:3128", "91.121.208.196:3128", "94.242.58.142:10010", "209.97.135.41:8080", "195.25.25.132:3128", "209.97.175.95:8080", "37.187.99.146:3128", "94.242.57.136:1448", "173.212.192.72:3128", "140.82.50.89:3128", "178.128.81.203:8080", "122.155.137.213:8080", "51.15.242.213:3128", "199.119.1.133:80", "167.99.205.69:8080", "178.128.247.187:8080", "178.49.140.250:8080", "159.89.126.130:8080", "5.141.81.166:8080", "51.15.218.114:3128", "109.197.188.19:8080", "178.128.37.162:8080", "94.242.55.108:10010", "185.22.174.69:10010", "112.126.65.236:80", "145.255.28.218:53281", "142.93.199.214:8080", "103.242.219.242:8080", "178.128.248.112:8080", "209.97.164.154:8080", "5.135.164.72:3128", "178.176.28.164:8080", "54.39.46.86:3128", "109.197.188.8:8080"] # 代理池 +https = true # 使用HTTPS协议 +pool = ["140.143.96.216:80", "118.24.61.22:3128", "113.200.56.13:8010", "221.7.255.168:8080", "223.93.172.248:3128", "221.7.255.168:80", "125.62.26.197:3128", "39.135.35.19:80", "39.106.160.36:3128", "119.63.99.205:3128", "39.135.35.18:80", "118.31.223.194:3128", "218.60.8.99:3129", "47.94.241.237:3128", "202.116.64.201:80","116.62.194.248:3128", "58.49.72.141:8888", "183.62.196.10:3128", "120.78.215.151:808", "218.207.212.86:80", "114.215.95.188:3128", "52.230.0.119:3128", "39.135.35.16:80", "218.66.253.146:8800", "35.185.179.37:3128", "154.8.182.226:3128", "119.196.18.50:8080", "112.126.65.236:80", "119.27.177.169:80", "221.219.147.182:3128", "121.152.17.96:3128", "101.37.27.173:3128", "185.22.174.69:10010", "119.36.221.13:8888", "185.22.174.69:1448", "118.27.29.54:3128", "159.138.21.53:3128", "94.242.58.108:10010", "173.212.192.72:3128", "159.89.22.167:8080", "178.128.46.132:8080", "194.67.201.106:3128", "94.242.58.14:10010", "111.47.192.141:8888","178.128.37.162:8080", "178.128.208.145:8080", "113.57.178.141:8888", "209.97.167.247:8080", "206.189.144.21:8080", "178.62.51.192:8080", "178.128.47.113:8080", "207.154.208.76:8080", "178.128.39.212:8080", "188.165.164.9:3128", "109.205.201.3:3128", "103.15.51.160:8080", "178.128.91.23:8080", "121.156.109.92:8080", "95.87.255.120:8080", "203.86.26.9:3128", "167.99.197.73:8080", "94.242.58.108:1448", "185.22.174.65:1448", "5.196.224.39:8080", "46.101.188.94:8080", "178.128.87.158:8080", "91.185.191.163:3128", "95.87.220.19:15600", "217.182.103.42:3128","94.242.58.142:10010", "43.239.178.90:8888", "94.242.57.136:10010", "91.121.208.196:3128", "185.216.35.170:3128", "159.89.118.85:8080", "185.22.174.65:10010", "203.150.192.86:46200", "159.89.126.130:8080", "206.81.13.127:8080", "178.128.247.187:8080", "188.120.238.38:5555", "217.182.119.131:3128", "51.15.229.200:3128", "157.65.28.91:3128", "64.33.247.157:3128", "112.140.186.70:8118", "91.121.108.164:3128", "5.189.162.175:3128", "167.99.156.71:8080", "178.176.28.164:8080", "188.166.69.172:8080", "188.166.43.167:8080", "142.93.199.214:8080", "101.37.79.125:3128", "199.119.1.133:80", "122.50.6.226:8080", "94.242.57.136:1448", "178.128.87.55:8080", "64.33.247.157:8080", "5.135.164.72:3128"] # 代理池 # 获取用户信息 [query] @@ -65,6 +66,13 @@ enable = true # 开关 mid = [124811915] # 被关注用户UID secret = [true] # 悄悄关注 +# 弹幕发送 +[danmakuPost] +enable = false # 开关 +aid = [25581792] # 稿件av号 +message = ["哔哩哔哩 (゜-゜)つロ 干杯~"] # 弹幕内容 +moment = [0] # 弹幕发送时间(为-1则随机选择发送时间) + # 评论点赞 [commentLike] enable = false # 开关