Compare commits

...
6 Commits
Author SHA1 Message Date
shanmite 3d90e11b96 docs: 更新CHANGELOG 2023-07-27 10:49:47 +08:00
shanmite d44981b7eb fix: 随机cookie参数buvid3 2023-07-27 10:47:24 +08:00
shanmite 3bfc93fd4e fix: 目前回复无法正常推送 (#302)
Fixed #302
2023-07-27 10:15:35 +08:00
shanmite ef8366be66 fix: tg推送代理设置出错 (#298)
Fixed #289
2023-07-10 10:48:48 +08:00
shanmite a7e31b484e docs: update 2023-07-10 09:49:36 +08:00
shanmite f4f45c5107 fix: cookie参数buvid3错误导致专栏获取滞后 2023-07-04 13:37:43 +08:00
11 changed files with 64 additions and 16 deletions
+9
View File
@@ -1,5 +1,14 @@
<!-- markdownlint-disable MD036 MD024-->
# CHANGELOG
## 主要变化(2.8.1)
* d44981b fix: 随机cookie参数buvid3
* 3bfc93f fix: 目前回复无法正常推送 (#302)
* ef8366b fix: tg推送代理设置出错 (#298)
* a7e31b4 docs: update
* f4f45c5 fix: cookie参数buvid3错误导致专栏获取滞后
_如果之前版本小于上一版本,请查看[CHANGELOG](https://github.com/shanmiteko/LotteryAutoScript/blob/main/CHANGELOG.md)变更说明_
## 主要变化(2.8.0)
* 2f935bb chore: update env.js
* eec22ff feat: 验证码自动识别
+4 -2
View File
@@ -74,7 +74,7 @@ Chrome浏览器:
.cookie
.split(/\s*;\s*/)
.map(it => it.split('='))
.filter(it => ['DedeUserID','bili_jct', 'SESSDATA'].indexOf(it[0]) > -1)
.filter(it => ['DedeUserID','bili_jct', 'SESSDATA', 'buvid3'].indexOf(it[0]) > -1)
.map(it => it.join('='))
.join('; ')
.split()
@@ -83,7 +83,9 @@ Chrome浏览器:
也可以采用**其他方式获取**所需的Cookie
只需含有 `DedeUserID=...;SESSDATA=...;bili_jct=...` 三项即可
只需含有 `DedeUserID=...;SESSDATA=...;bili_jct=...;buvid3=...` 即可
buvid3亦可不填 使用随机生成值
(分号分割, 不要换行, 顺序随意)
+6 -1
View File
@@ -10,4 +10,9 @@ docker run -p 9898:9898 -d ocr_api_server
```
### 非docker启动方式
[ocr_api_server](https://github.com/shanmiteko/ocr_api_server)
![ocr server](pic/ocr1.png)
[ocr_api_server](https://github.com/shanmiteko/ocr_api_server)
![start](pic/ocr0.png)
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

+18 -3
View File
@@ -1,4 +1,4 @@
const { getRemoteConfig, createDir, createFile, dyids_dir } = require("../utils");
const { getRemoteConfig, getRandomOne, createDir, createFile, dyids_dir } = require("../utils");
const config = require("../data/config");
let global_var = {
@@ -29,7 +29,22 @@ let global_var = {
config.updata(num);
this.set('cookie', cookie + ';buvid3=AAAAAAAA-BBBB-CCCC-DDDD-DDDDDDDDDDDDDDDDDinfoc');
if (!/buvid3/.test(cookie)) {
const charset = "0123456789ABCDEF".split("");
const buvid3 = "x".repeat(8).split("").map(() => getRandomOne(charset)).join("")
+ "-"
+ "x".repeat(4).split("").map(() => getRandomOne(charset)).join("")
+ "-"
+ "x".repeat(4).split("").map(() => getRandomOne(charset)).join("")
+ "-"
+ "x".repeat(4).split("").map(() => getRandomOne(charset)).join("")
+ "-"
+ "x".repeat(17).split("").map(() => getRandomOne(charset)).join("")
+ "infoc";
this.set('cookie', cookie + ";" + buvid3);
} else {
this.set('cookie', cookie);
}
cookie.split(/\s*;\s*/).forEach(item => {
const _item = item.split('=');
@@ -53,4 +68,4 @@ let global_var = {
};
module.exports = global_var;
module.exports = global_var;
+2 -2
View File
@@ -495,8 +495,8 @@ function tgBotNotify(text, desp) {
}
if (TG_PROXY_HOST && TG_PROXY_PORT) {
options.proxy = {
hostname: TG_PROXY_HOST,
port: TG_PROXY_PORT * 1
url: "http://" + TG_PROXY_HOST + ":" + TG_PROXY_PORT,
auth_headers: []
}
}
send(options)
+3 -1
View File
@@ -218,7 +218,9 @@ const bili_client = {
items = data.items || [];
log.info('获取一页回复', `成功(${items.length})`);
return items
.filter(it => it.item.type === 'reply')
.filter(it => it.item !== undefined
&& it.user !== undefined
&& it.reply_time !== undefined)
.map(it => {
return {
nickname: it.user.nickname,
+18 -5
View File
@@ -20,12 +20,16 @@
* @property {boolean} [redirect] 是否重定向
* @property {number} [retry_times] 重试次数
*
* @typedef ProxyConfig
* @property {string} url https?://{IP}:{PORT}
* @property {[[string, string]]} auth_headers [[k,v],[k,v]]
*
* @typedef {object} RequestOptions Http请求选项
* @property {string} [method] 请求方法
* @property {string} url 完整链接
* @property {boolean} [stream] 是否流式数据
* @property {RequestConfig} [config] 设置
* @property {string} [proxy] HTTP代理 IP:PORT
* @property {ProxyConfig} [proxy] HTTP代理 IP:PORT
* @property {Object.<string, string|number>} [query] 查询选项
* @property {Object.<string, string|number> | string} [contents] 内容
* @property {HttpHeaders} [headers] 请求头
@@ -34,7 +38,9 @@
*/
const { request: http_request } = require('http');
const { HttpProxyAgent } = require('http-proxy-agent');
const { request: https_request } = require('https');
const { HttpsProxyAgent } = require('https-proxy-agent');
const { stringify } = require('querystring');
/**默认编码 */
@@ -64,7 +70,10 @@ function send(detail) {
const { timeout, wait, retry, redirect, retry_times } = config;
const thisURL = new URL(url)
, content = formatContents(headers["content-type"], contents)
, request = (thisURL.protocol === 'https:') && !proxy ? https_request : http_request;
, request = (thisURL.protocol === 'https:') ? https_request : http_request;
/**
* @type {import("https").RequestOptions}
*/
let options = {
timeout,
method: method.toUpperCase(),
@@ -80,9 +89,13 @@ function send(detail) {
options.headers['content-length'] = Buffer.byteLength(content, 'utf-8').toString();
}
if (proxy) {
options.headers.host = thisURL.host;
options.path = thisURL.href;
[options.host, options.port] = proxy.split(':');
options.agent = (thisURL.protocol === 'https:')
? new HttpsProxyAgent(proxy.url)
: new HttpProxyAgent(proxy.url);
for (const ah of proxy.auth_headers) {
options.headers[ah[0]] = ah[1]
}
options.rejectUnauthorized = false
}
const req = request(options, res => {
let protodata = '';
+3 -1
View File
@@ -1,6 +1,6 @@
{
"name": "lottery-auto-script",
"version": "2.8.0",
"version": "2.8.1",
"description": "自动参与B站动态抽奖",
"main": "main.js",
"scripts": {
@@ -42,6 +42,8 @@
},
"dependencies": {
"chalk": "^4.1.2",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.0",
"nodemailer": "^6.7.0"
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# version: <major.minor.patch>
level=minor
level=patch
npm version $level \
--no-commit-hooks \