mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-05 01:28:46 +08:00
fix mobile can not login
This commit is contained in:
parent
6a0cf9dab1
commit
01276030ca
@ -274,7 +274,7 @@ PS: This file could be delete if you want to.
|
|||||||
'130106': `Can not use Douban this time, Please try Login In Douban Plugin. If not working please again after 12 hour or 24 hour. Or you can reset your connection `,
|
'130106': `Can not use Douban this time, Please try Login In Douban Plugin. If not working please again after 12 hour or 24 hour. Or you can reset your connection `,
|
||||||
|
|
||||||
'130107': `Can not find array setting for {1} in {0} , Please add it in array settings`,
|
'130107': `Can not find array setting for {1} in {0} , Please add it in array settings`,
|
||||||
|
'130108': `Redirect times too much, please check your network or proxy`,
|
||||||
|
|
||||||
'140201': `[OB-Douban]: searching '{0}'...`,
|
'140201': `[OB-Douban]: searching '{0}'...`,
|
||||||
'140202': `[OB-Douban]: result {0} rows`,
|
'140202': `[OB-Douban]: result {0} rows`,
|
||||||
|
|||||||
@ -29,10 +29,17 @@ export default class Logger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public debug(e: any): any {
|
public debug(e: any): any {
|
||||||
|
if (!e) {
|
||||||
|
return e;
|
||||||
|
}
|
||||||
if(e instanceof Error) {
|
if(e instanceof Error) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}else {
|
}else {
|
||||||
|
try {
|
||||||
console.log(`OB-Douban:${moment(new Date()).format('YYYY-MM-DD HH:mm:SS')}:${typeof e == 'string' ? e : JSON.stringify(e)}`);
|
console.log(`OB-Douban:${moment(new Date()).format('YYYY-MM-DD HH:mm:SS')}:${typeof e == 'string' ? e : JSON.stringify(e)}`);
|
||||||
|
}catch (e) {
|
||||||
|
console.log(`OB-Douban:${moment(new Date()).format('YYYY-MM-DD HH:mm:SS')}:` + e.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,13 +3,14 @@ import {i18nHelper} from "../../lang/helper";
|
|||||||
import {LoginUtil} from "../LoginUtil";
|
import {LoginUtil} from "../LoginUtil";
|
||||||
import DoubanHumanCheckModel from "../../douban/component/DoubanHumanCheckModel";
|
import DoubanHumanCheckModel from "../../douban/component/DoubanHumanCheckModel";
|
||||||
|
|
||||||
|
var https:any = null;
|
||||||
const {https} = require("follow-redirects");
|
|
||||||
|
|
||||||
export default class DesktopHttpUtil {
|
export default class DesktopHttpUtil {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get请求
|
* get请求
|
||||||
* @param url 请求地址
|
* @param url 请求地址
|
||||||
@ -23,14 +24,29 @@ export default class DesktopHttpUtil {
|
|||||||
let options = {
|
let options = {
|
||||||
headers: headersInner
|
headers: headersInner
|
||||||
}
|
}
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取网页开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
|
|
||||||
return new Promise((resolve, rejects) => {
|
return new Promise((resolve, rejects) => {
|
||||||
|
this.httpRequestGetInner(url, options, 0, resolve, rejects, settingsManager);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private static httpRequestGetInner(url: string, options: any, times:number, resolve:any, rejects:any, settingsManager?: SettingsManager) {
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取网页[开始]${times}:url:${url}\nheaders:${JSON.stringify(options)}`);
|
||||||
|
if (!https) {
|
||||||
|
https = require("follow-redirects").https;
|
||||||
|
}
|
||||||
|
|
||||||
https.get(url, { ...options }, function (response: any) {
|
https.get(url, { ...options }, function (response: any) {
|
||||||
let chunks: any = [],
|
let chunks: any = [],
|
||||||
size = 0;
|
size = 0;
|
||||||
if (response.status == 403) {
|
if (settingsManager) {
|
||||||
rejects(new Error(i18nHelper.getMessage('130106')));
|
settingsManager.debug(`Obsidian-Douban:从网络获取网页[完成]${times}:url:${url}\nresponse-header:${JSON.stringify(response.headers)}`);
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取网页[完成]${times}:response-body:\n${response.text}`);
|
||||||
}
|
}
|
||||||
|
if (response.statusCode == 403) {
|
||||||
|
rejects(new Error(i18nHelper.getMessage('130106')));
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
response.on("data", function (chunk: any) {
|
response.on("data", function (chunk: any) {
|
||||||
chunks.push(chunk)
|
chunks.push(chunk)
|
||||||
size += chunk.length
|
size += chunk.length
|
||||||
@ -48,9 +64,9 @@ export default class DesktopHttpUtil {
|
|||||||
resolve(html)
|
resolve(html)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get请求
|
* get请求
|
||||||
* @param url 请求地址
|
* @param url 请求地址
|
||||||
@ -63,13 +79,27 @@ export default class DesktopHttpUtil {
|
|||||||
const options = {
|
const options = {
|
||||||
headers: headersInner
|
headers: headersInner
|
||||||
}
|
}
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取json开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
|
|
||||||
return new Promise((resolve, rejects) => {
|
return new Promise((resolve, rejects) => {
|
||||||
|
this.httpRequestGetJsonInner(url, options, 0, resolve, rejects, settingsManager);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private static httpRequestGetJsonInner(url: string, options: any, times:number, resolve:any, rejects:any, settingsManager?: SettingsManager) {
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取json开始:\nurl:${url}\nheaders:${JSON.stringify(options)}`);
|
||||||
|
if (!https) {
|
||||||
|
https = require("follow-redirects").https;
|
||||||
|
}
|
||||||
https.get(url, { ...options }, function (response: any) {
|
https.get(url, { ...options }, function (response: any) {
|
||||||
const chunks: any = [];
|
let chunks: any = [],
|
||||||
let size = 0;
|
size = 0;
|
||||||
if (response.status == 403) {
|
if (settingsManager) {
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取JSON完成${times}:url:\n${url}`);
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取JSON完成${times}:header:\n${JSON.stringify(response.headers)}`);
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取JSON完成${times}:body:\n${response.text}`);
|
||||||
|
}
|
||||||
|
if (response.statusCode == 403) {
|
||||||
rejects(new Error(i18nHelper.getMessage('130106')));
|
rejects(new Error(i18nHelper.getMessage('130106')));
|
||||||
|
return
|
||||||
}
|
}
|
||||||
response.on("data", function (chunk: any) {
|
response.on("data", function (chunk: any) {
|
||||||
chunks.push(chunk)
|
chunks.push(chunk)
|
||||||
@ -80,7 +110,7 @@ export default class DesktopHttpUtil {
|
|||||||
const data = Buffer.concat(chunks, size)
|
const data = Buffer.concat(chunks, size)
|
||||||
const html = data.toString()
|
const html = data.toString()
|
||||||
if (settingsManager) {
|
if (settingsManager) {
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取json完成:\nhtml:\n${html}`);
|
settingsManager.debug(`Obsidian-Douban:从网络获取JSON完成:\nhtml:\n${html}`);
|
||||||
}
|
}
|
||||||
if (LoginUtil.contentNeedLogin(html)) {
|
if (LoginUtil.contentNeedLogin(html)) {
|
||||||
rejects(new Error(i18nHelper.getMessage('140304')));
|
rejects(new Error(i18nHelper.getMessage('140304')));
|
||||||
@ -88,7 +118,6 @@ export default class DesktopHttpUtil {
|
|||||||
resolve(html)
|
resolve(html)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,42 +130,56 @@ export default class DesktopHttpUtil {
|
|||||||
let options = {
|
let options = {
|
||||||
headers: headers
|
headers: headers
|
||||||
}
|
}
|
||||||
if (settingsManager) {
|
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取文件开始:\n${url}`);
|
|
||||||
}
|
|
||||||
return new Promise((resolve, rejects) => {
|
return new Promise((resolve, rejects) => {
|
||||||
|
this.httpRequestGetBufferInner(url, options, 0, resolve, rejects, settingsManager);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private static httpRequestGetBufferInner(url: string, options: any, times:number, resolve:any, rejects:any, settingsManager?: SettingsManager) {
|
||||||
|
if (settingsManager) {
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取文件开始:\n${url}\nheaders:${JSON.stringify(options)}`);
|
||||||
|
if (!https) {
|
||||||
|
https = require("follow-redirects").https;
|
||||||
|
}
|
||||||
https.get(url, {...options}, function (response: any) {
|
https.get(url, {...options}, function (response: any) {
|
||||||
let chunks: any = [],
|
let chunks: any = [],
|
||||||
size = 0;
|
size = 0;
|
||||||
if (response.status == 403) {
|
if (settingsManager) {
|
||||||
rejects(new Error(i18nHelper.getMessage('130106')));
|
settingsManager.debug(`Obsidian-Douban:从网络获取文件完成${times}:url:\n${url}`);
|
||||||
|
settingsManager.debug(`Obsidian-Douban:从网络获取文件完成${times}:header:\n${JSON.stringify(response.headers)}`);
|
||||||
}
|
}
|
||||||
|
if (response.statusCode == 403) {
|
||||||
|
rejects(new Error(i18nHelper.getMessage('130106')));
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
response.on("data", function (chunk: any) {
|
response.on("data", function (chunk: any) {
|
||||||
chunks.push(chunk)
|
chunks.push(chunk)
|
||||||
size += chunk.length
|
size += chunk.length
|
||||||
})
|
})
|
||||||
|
|
||||||
response.on("end", function () {
|
response.on("end", function () {
|
||||||
let data = Buffer.concat(chunks, size)
|
const data = Buffer.concat(chunks, size)
|
||||||
if (settingsManager) {
|
if (settingsManager) {
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取文件完成:\n${url}`);
|
settingsManager.debug(`Obsidian-Douban:从网络获取文件完成:`);
|
||||||
}
|
}
|
||||||
resolve(data)
|
resolve(data)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static async humanCheck(html: any, url: string, settingsManager?: SettingsManager): Promise<any> {
|
public static async humanCheck(html: any, url: string, settingsManager?: SettingsManager): Promise<any> {
|
||||||
|
if (!html) {
|
||||||
|
return html;
|
||||||
|
}
|
||||||
if (settingsManager) {
|
if (settingsManager) {
|
||||||
settingsManager.debug(html);
|
settingsManager.debug(html);
|
||||||
}
|
}
|
||||||
if (html && html.indexOf("<title>禁止访问</title>") != -1) {
|
if (html && html.toString().indexOf("<title>禁止访问</title>") != -1) {
|
||||||
const loginModel = new DoubanHumanCheckModel(url);
|
const loginModel = new DoubanHumanCheckModel(url);
|
||||||
await loginModel.load();
|
await loginModel.load();
|
||||||
return '';
|
return '';
|
||||||
|
|||||||
@ -14,14 +14,14 @@ export default class MobileHttpUtil {
|
|||||||
public static httpRequestGet(url: string, headers: any, settingsManager?: SettingsManager): Promise<RequestUrlResponse> {
|
public static httpRequestGet(url: string, headers: any, settingsManager?: SettingsManager): Promise<RequestUrlResponse> {
|
||||||
return this.httpRequestGetInner(url, headers, 0, settingsManager);
|
return this.httpRequestGetInner(url, headers, 0, settingsManager);
|
||||||
}
|
}
|
||||||
private static httpRequestGetInner(url: string, headers: any, times:number, settingsManager?: SettingsManager): Promise<RequestUrlResponse> {
|
private static async httpRequestGetInner(url: string, headers: any, times:number, settingsManager?: SettingsManager): Promise<RequestUrlResponse> {
|
||||||
let requestUrlParam: RequestUrlParam = {
|
let requestUrlParam: RequestUrlParam = {
|
||||||
url: url,
|
url: url,
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: { ...headers},
|
headers: { ...headers},
|
||||||
throw: true
|
throw: true
|
||||||
};
|
};
|
||||||
return requestUrl(requestUrlParam)
|
return await requestUrl(requestUrlParam)
|
||||||
// .then(res => res.text)
|
// .then(res => res.text)
|
||||||
.then(response => {
|
.then(response => {
|
||||||
if (response && response.text.indexOf('https://sec.douban.com/a') > 0) {
|
if (response && response.text.indexOf('https://sec.douban.com/a') > 0) {
|
||||||
@ -52,15 +52,18 @@ export default class MobileHttpUtil {
|
|||||||
} else {
|
} else {
|
||||||
throw log.error(i18nHelper.getMessage('130101').replace('{0}', e.toString()), e)
|
throw log.error(i18nHelper.getMessage('130101').replace('{0}', e.toString()), e)
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static async humanCheck(html: any, url: string, settingsManager?: SettingsManager): Promise<any> {
|
public static async humanCheck(html: any, url: string, settingsManager?: SettingsManager): Promise<any> {
|
||||||
|
if (!html) {
|
||||||
|
return html;
|
||||||
|
}
|
||||||
if (settingsManager) {
|
if (settingsManager) {
|
||||||
settingsManager.debug(html);
|
settingsManager.debug(html);
|
||||||
}
|
}
|
||||||
if (html && html.indexOf("<title>禁止访问</title>") != -1) {
|
if (html && html.toString().indexOf("<title>禁止访问</title>") != -1) {
|
||||||
const loginModel = new DoubanHumanCheckModel(url);
|
const loginModel = new DoubanHumanCheckModel(url);
|
||||||
await loginModel.load();
|
await loginModel.load();
|
||||||
return '';
|
return '';
|
||||||
@ -68,4 +71,6 @@ export default class MobileHttpUtil {
|
|||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user