mirror of
https://github.com/shanmiteko/LotteryAutoScript.git
synced 2026-07-22 21:13:47 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d90e11b96 | ||
|
|
d44981b7eb | ||
|
|
3bfc93fd4e | ||
|
|
ef8366be66 | ||
|
|
a7e31b484e | ||
|
|
f4f45c5107 |
@@ -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: 验证码自动识别
|
||||
|
||||
@@ -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亦可不填 使用随机生成值
|
||||
|
||||
(分号分割, 不要换行, 顺序随意)
|
||||
|
||||
|
||||
@@ -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_api_server](https://github.com/shanmiteko/ocr_api_server)
|
||||
|
||||

|
||||
Binary file not shown.
|
After Width: | Height: | Size: 328 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 292 KiB |
+18
-3
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# version: <major.minor.patch>
|
||||
level=minor
|
||||
level=patch
|
||||
|
||||
npm version $level \
|
||||
--no-commit-hooks \
|
||||
|
||||
Reference in New Issue
Block a user