1
0
mirror of https://github.com/nrop19/weiman_app.git synced 2025-08-02 23:05:48 +08:00
weiman_app/lib/crawler/http.dart
2020-11-07 21:18:42 +00:00

81 lines
2.0 KiB
Dart

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:weiman/classes/chapter.dart';
import 'package:weiman/classes/chapterContent.dart';
import 'package:weiman/db/book.dart';
import 'http18Comic.dart';
final headers = {
'user-agent':
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
'accept':
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-HK;q=0.7',
'cache-control': 'no-cache',
'pragma': 'no-cache',
};
class MyHttpClient {
static Map<String, HttpBook> clients = {};
static init(String proxy, int timeout) {
Http18Comic.instance = Http18Comic(
baseUrls.values.first,
name: baseUrls.keys.first,
headers: headers,
timeout: timeout,
);
clients[Http18Comic.instance.id] = Http18Comic.instance;
setGlobalProxy(proxy);
}
}
abstract class HttpBook {
final String id;
final String name;
final Dio dio;
HttpBook(this.id, this.name, this.dio);
Future<List<Book>> searchBook(String name, [int page]);
Future<Book> getBook(String aid);
Future<List<String>> getChapterImages(Book book, Chapter chapter);
Future<ChapterContent> getChapterContent(Book book, Chapter chapter);
Future<List<int>> getImage(String url, {bool reSort = false});
Future<List<Book>> hotBooks([String type = '', int page]);
}
class MyProxyHttpOverride extends HttpOverrides {
final String proxy;
MyProxyHttpOverride(this.proxy);
@override
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return 'PROXY $proxy;';
}
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
void setGlobalProxy(String proxy) {
print('setGlobalProxy $proxy');
if (proxy != null)
HttpOverrides.global = MyProxyHttpOverride(proxy);
else
HttpOverrides.global = null;
}