From c0f5c327340ba22b87e99ce0779347fe4203322a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=92=80=E7=92=A8=E6=A2=A6=E6=98=9F?= <157385609+cuicanmengxing@users.noreply.github.com> Date: Sun, 12 May 2024 11:49:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E7=BA=A7=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/config/index.js | 2 +- packages/gui/package.json | 2 +- packages/gui/src/view/pages/plugin/pip.vue | 6 +++ packages/mitmproxy/src/lib/dns/https.js | 61 ++++++++++------------ 4 files changed, 36 insertions(+), 35 deletions(-) diff --git a/packages/core/src/config/index.js b/packages/core/src/config/index.js index 5d8c983..2a30654 100644 --- a/packages/core/src/config/index.js +++ b/packages/core/src/config/index.js @@ -325,7 +325,7 @@ module.exports = { enabled: true, interval: 300000, hostnameList: ['github.com'], - dnsProviders: ['usa', 'quad9', 'rubyfish'] + dnsProviders: ['safe360', 'cloudflare', 'rubyfish'] } } }, diff --git a/packages/gui/package.json b/packages/gui/package.json index 7ff3966..29e80f6 100644 --- a/packages/gui/package.json +++ b/packages/gui/package.json @@ -52,7 +52,7 @@ "@vue/cli-service": "~4.5.0", "@vue/eslint-config-standard": "^5.1.2", "babel-eslint": "^10.1.0", - "electron": "17.1.0", + "electron": "30.0.3", "electron-devtools-installer": "^3.1.0", "electron-icon-builder": "^2.0.1", "eslint": "^6.7.2", diff --git a/packages/gui/src/view/pages/plugin/pip.vue b/packages/gui/src/view/pages/plugin/pip.vue index ccf6cdc..294d58f 100644 --- a/packages/gui/src/view/pages/plugin/pip.vue +++ b/packages/gui/src/view/pages/plugin/pip.vue @@ -32,6 +32,12 @@ aliyun镜像 + + 北京外国语大学镜像 + + + 南京大学镜像 +
设置后立即生效,即使关闭ds也会继续保持
diff --git a/packages/mitmproxy/src/lib/dns/https.js b/packages/mitmproxy/src/lib/dns/https.js index d2c6807..ef1cf56 100644 --- a/packages/mitmproxy/src/lib/dns/https.js +++ b/packages/mitmproxy/src/lib/dns/https.js @@ -4,48 +4,43 @@ const BaseDNS = require('./base') const log = require('../../utils/util.log') const dohQueryAsync = promisify(doh.query) -const PRESETS = { - 'github.com': ['20.27.177.113', '20.205.243.166', '20.200.245.247'], - 'api.github.com': ['20.27.177.116', '20.205.243.168', '20.200.245.245'] -} - -class DNSOverHTTPS extends BaseDNS { - constructor (dnsServer) { +module.exports = class DNSOverHTTPS extends BaseDNS { + constructor(dnsServer) { super() this.dnsServer = dnsServer - this.lastLookupError = null // 添加属性来记录最后一次查询错误 } - processQueryResult (result) { - if (result.answers.length === 0) { - log.error('该域名没有ip地址解析:', result.name) - return [] + async _lookup(hostname) { + // 直接判断域名是否为example.com + if (hostname === 'github.com') { + log.info('域名github.com使用内置IP集') + // 返回预设的IP地址集 + return ['20.27.177.113', '20.205.243.166', '20.200.245.247'] + // 20.27.177.113日本(三网平均延时88MS(三网优秀)) 20.205.243.166新加坡(三网平均延时96MS(电信联通106.5平均延时,移动平均77MS)) 20.200.245.247韩国(三网平均108ms(移动平均120ms)) } - return result.answers - .filter(item => item.type === 'A') - .map(item => item.data) - } - - async _lookup (hostname) { - const preset = PRESETS[hostname] - if (preset) { - log.debug(`使用预设IP集:${hostname}`) - return preset + // 直接判断域名是否为example.com + if (hostname === 'github.com') { + log.info('域名github.com使用内置IP集') + // 返回预设的IP地址集 + return ['20.27.177.116', '20.205.243.168', '20.200.245.245'] } try { const result = await dohQueryAsync({ url: this.dnsServer }, [{ type: 'A', name: hostname }]) - const ips = this.processQueryResult(result) - if (ips.length > 0) { - log.info('获取到域名地址:', hostname, ips) + if (result.answers.length === 0) { + // 说明没有获取到ip + log.info('该域名没有ip地址解析:', hostname) + return [] } - this.lastLookupError = null // 重置错误记录 - return ips + const ret = result.answers.filter(item => item.type === 'A').map(item => item.data) + if (ret.length === 0) { + log.info('该域名没有IPv4地址解析:', hostname) + } else { + log.info('获取到域名地址:', hostname, JSON.stringify(ret)) + } + return ret } catch (e) { - log.error('DNS查询错误:', hostname, ', DNS服务器:', this.dnsServer, ', 错误:', e) - this.lastLookupError = e // 记录错误 - throw e // 重新抛出错误,让调用者处理 + log.warn('DNS query error:', hostname, ', dns:', this.dnsServer, ', error:', e) + return [] } } -} - -module.exports = DNSOverHTTPS +} \ No newline at end of file