GoodCoder666 / GoogleTranslate_IPFinder

谷歌翻译服务器在中国大陆的IP地址扫描、测速工具。
GNU General Public License v3.0
1.51k stars 114 forks source link

写入host时,出现 gbk 编码错误 #1

Closed weitanx closed 1 year ago

weitanx commented 1 year ago

系统环境:Windows 10 家庭中文版 22H2 19045.2311 复现步骤:点击 写入hosts 时,出现 gbk 编码错误提示 image

GoodCoder666 commented 1 year ago

@weitanx 请问本地Hosts文件是否包含中文字符?

weitanx commented 1 year ago

@weitanx请询问本地Hosts文件是否包含中文字符?

之前 hosts 文件中包含中文注释,现在我把中文注释全部删除后还是会出现 "gbk错误"的提示。 image

GoodCoder666 commented 1 year ago

那你在SwitchHosts软件里边的系统Hosts中的第一个红点是什么?UTF-8的文件头?

GoodCoder666 commented 1 year ago

我完全可以适配utf-8编码,不过Windows下的HOSTS好像是不能用utf-8的。

weitanx commented 1 year ago

witchHosts软件里面的系统Hosts中的第一个红点是什么?UTF-8的文件头?

我完全可以配utf-8编码,不过Windows下的HOSTS好象是不能用utf-8的。

我修改了hosts 文件的编码格式为 无 BOM 的 UTF-8,点击 写入hosts 可以正常写入了,但是会出现下列问题 image

blog2020 commented 1 year ago

我看了一下我的win7系统hosts文件是默认UTF-8格式的

GoodCoder666 commented 1 year ago

@weitanx 试一下新版本:https://github.com/GoodCoder666/GoogleTranslate_IPFinder/releases/download/alpha/checker-win-x64.exe

GoodCoder666 commented 1 year ago

@weitanx 对于空行的问题,我个人建议你试试把整个HOSTS文件全部清空然后再写入

如果hosts中已有谷歌翻译的host,程序默认是会替换掉原来设置的IP,但谷歌翻译的host在文件中的位置不变。

还有,正常就是写入第一个IP,为了访问速度不会写入多个IP(后面可能会考虑加个选项供用户自行设置)。

weitanx commented 1 year ago

@weitanx针对空行的问题,我个人建议你试把整个HOSTS文件全部清空然后重新写入

如果hosts中已有谷歌翻译的host,程序默认认为会替换掉原始设置的IP,但谷歌翻译的host在文件中的位置不变。

还有,正常就是写入第一个IP,为了访问速度不会写入多个IP(后面可能会考虑添加一个选项供用户自行设置)。

前提条件: 已下载更新为最新版本,hosts 文件内容已清空

存在问题: 在hosts 文件内容已清空的前提下, 第一次点击 "写入hosts"按钮 会从第三行开始写入,紧接着会出现第4、5空行 从第二次开始 每点击一次 "写入hosts"按钮,(如果hosts中已有谷歌翻译的host,程序默认认为会替换掉原始设置的IP,但谷歌翻译的host在文件中的位置不变)括号中的内容正常执行的前提下,都会追加一个新的空行

动画

jingjingxyk commented 1 year ago

截图报错,并不是因为GBK报错,而是因为BOM (Byte Order Mark) 头报错

文件开始的地方有三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码

学会修改hosts的用户,动手能力并不差,软件帮他把hosts文件打开就行,以及准备域名translate.googleapis.com解析列表就好

写入文件,就让用户自己操作就好了,无非是复制、粘贴、保存罢了。

非常赞大佬,把想法变成现实的能力

最后说下这种简单的办法 (根据DNS解析原理,劫持本机DNS解析)

网络拨测工具 : https://boce.aliyun.com/detect/http

网络拨测工具测试地址:(这里也能找到很多谷歌在大陆的IP地址)


https://fonts.googleapis.cn/css?family=Google+Sans

https://fonts.gstatic.cn/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fBBc4.woff2

获得 google ip 办法之二


dig fonts.googleapis.cn 

dig fonts.gstatic.cn

生成解析里列表

114.250.65.34    translate.googleapis.com

我是通过这个地址 https://www.haah.net/archives/8704.html 来到这里的

下面是我自己用的通过javascript 获取IP列表

执行拨测结束以后,打开WEB控制台,执行下面的代码就可以获取IP列表

花括号也是代码的一部分,用花括号包起来的意思,是为了隔离作用域,可以多次执行


{
    let list = []
    let table_body = document.querySelectorAll('#app .show-detection-data .ping-result-area .next-table-body table tbody tr')
    table_body.forEach((value, key, parent) => {
        let row = [];
        value.querySelectorAll('td').forEach((v) => {
            console.log(v.innerText)
            row.push(v.innerText)
        })
        list.push(row)
    })
    // 优化: 要做的就是 查找和排序
    //取第二列数据
    let new_list = list.map((value) => {
        return value[1]
    })
    //去重
    let ip_list = Array.from(new Set(new_list))
    console.log(ip_list)

    //下载文件
    let blob = new Blob([JSON.stringify(ip_list)], {type: "text/txt"});
    let url = window.URL.createObjectURL(blob);
    let a = document.createElement("a");
    a.style.display = "none";
    a.href = url;
    a.download = 'google-ip-' + (new Date()).toISOString() + '.txt';
    a.click();
    setTimeout(function () {
        window.URL.revokeObjectURL(url);
    }, 3000);
}
GoodCoder666 commented 1 year ago

@jingjingxyk 感谢分享

@weitanx 现在编码问题已经解决了,我专门开了一个新的issue #4 来解决空行问题,大家可以到那里去讨论。