• 完美修复google翻译失效的问题


    背景

    使用chrome的小伙伴应该都知道有个页面一键翻译,对于英语相当蹩脚的我来说灰常好用,然而…
    在这里插入图片描述
    2010年,谷歌拒绝同意审查其在中国的搜索结果后,撤出了在中国的搜索引擎业务。
    2017年,谷歌为中国用户推出了改进版的Google翻译应用。
    2022 google translate 退出中国市场


    google翻译最终还是退出了中国。

    解决方法

    手动干预配置DNS,将google translate解析到提供服务的地区来达到效果。
    使用以下脚本可以获取延迟较低的ip
    windows下有一个很好用的快速修改hosts文件的工具SwitchHosts。

    ip 源

    translate地址

    源代码

    对代码做了部分注释,各位看官慢用. 高手请忽略

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    '''
    @Project :dataTransfer
    @File :Google Translate.py
    @Author :ninesun
    @Date :2022/11/18 8:43
    @Desc:
    '''
    
    import os
    from concurrent.futures import ThreadPoolExecutor
    # from pyperclip import copy
    
    os.system('title 查找最佳的谷歌翻译IP')
    
    ipAndSpeed = []
    
    ips = '''
    142.250.4.90
    172.253.114.90
    172.217.203.90
    172.253.112.90
    142.250.9.90
    172.253.116.90
    142.250.97.90
    142.250.30.90
    142.250.111.90
    172.217.215.90
    142.250.11.90
    142.251.9.90
    108.177.122.90
    142.250.96.90
    142.250.100.90
    142.250.110.90
    172.217.214.90
    172.217.222.90
    142.250.31.90
    142.250.126.90
    142.250.10.90
    172.217.195.90
    172.253.115.90
    142.251.5.90
    142.250.136.90
    142.250.12.90
    142.250.101.90
    172.217.192.90
    142.250.0.90
    142.250.107.90
    172.217.204.90
    142.250.28.90
    142.250.125.90
    172.253.124.90
    142.250.8.90
    142.250.128.90
    142.250.112.90
    142.250.27.90
    142.250.105.90
    172.253.126.90
    172.253.123.90
    172.253.62.90
    142.250.98.90
    172.253.113.90
    '''
    
    
    def ipList():
        '''获取IP地址'''
        return { i.strip() for i in ips.splitlines() if i.strip() }
    
    
    def pingInfo(ip):
        '''ping Ip 获取ms 最终取最小值'''
        cmd = f'ping /n 1 {ip}'
        for echoTxt in os.popen(cmd):
            if '请求超时。' in echoTxt:
                ipAndSpeed.append([ip, 999])
                print(ip, '超时')
                return
            if echoTxt := echoTxt.strip(): # 去掉头尾的空格
                echoTxt = echoTxt.replace(' ', '') # 去掉字符串中间的空格,结合ping的结果来理解
                if ',平均=' in echoTxt:
                    ms = int(echoTxt.split('=')[-1].replace('ms', ''))  # 分割平均=xxms
                    ipAndSpeed.append([ip, ms])
                    print(ip, f'{ms}ms')
                    return
    
    
    def fastScan():
        with ThreadPoolExecutor(20) as Pool:  #使用线程池,设置20个线程,可修改
            Pool.map(pingInfo, ipList())
    
    
    fastScan()
    
    sortedSpeed = sorted(ipAndSpeed, key=lambda x: x[-1]) # 按照延迟大小升序排序
    for n, i in enumerate(sortedSpeed, 1): # 将一个sortedSpeed数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 此例当中下标从1开始
        i[-1] = '超时' if i[-1] == 999 else f'{i[-1]}ms'
        print(f'【{str(n).zfill(2)}】\t{i[0]}\t {i[1]}') # zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
    
    fastip, ms = sortedSpeed[0]
    print(f'\n最佳IP是:【{fastip}】,响应时间:【{ms}】')
    
    
    
    
    # copy(hostTxt)
    # print(f'\n\n设置hosts的内容“已复制到剪贴板”:   {hostTxt}\n\n\n按【任意键】打开hosts目录,然后【手动】修改。',
    #       end='')
    #
    # os.system('pause>nul')
    # os.popen('explorer /select,C:\Windows\System32\drivers\etc\hosts')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112

    技术点

    这个代码逻辑比较简单,你先ping一个ip看看结果再来理解这个代码。
    在这里插入图片描述

    python多线程

    ThreadPoolExecutor

    海象运算

    这里我的py环境是3.8.6 ,这个语法idea报错,但是代码可以运行。怀疑是Pycharm(2017.2.3)的bug.

      if echoTxt := echoTxt.strip(): # 头尾空格去掉
                echoTxt = echoTxt.replace(' ', '') # 正在 Ping 142.250.4.90 具有 32 字节的数据  把这句话的空格替换掉
                if ',平均=' in echoTxt:
                    ms = int(echoTxt.split('=')[-1].replace('ms', ''))  # 分割平均=xxms
                    ipAndSpeed.append([ip, ms])
                    print(ip, f'{ms}ms')
                    return
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    完美解决

    1、延迟较低的ip
    【01】	142.250.4.90	 86ms
    【02】	142.250.101.90	 184ms
    【03】	142.250.107.90	 207ms
    【04】	142.250.30.90	 210ms
    【05】	142.250.126.90	 212ms
    【06】	142.250.100.90	 213ms
    【07】	142.250.8.90	 213ms
    【08】	172.217.195.90	 216ms
    【09】	142.250.28.90	 218ms
    【10】	172.217.214.90	 222ms
    【11】	142.250.10.90	 223ms
    【12】	142.250.136.90	 223ms
    【13】	142.250.125.90	 224ms
    【14】	142.250.128.90	 226ms
    【15】	172.217.215.90	 228ms
    【16】	142.250.96.90	 229ms
    【17】	172.253.124.90	 230ms
    【18】	172.253.113.90	 230ms
    【19】	172.253.62.90	 231ms
    【20】	142.250.12.90	 231ms
    【21】	172.253.123.90	 233ms
    【22】	142.250.9.90	 234ms
    【23】	172.253.126.90	 234ms
    【24】	108.177.122.90	 234ms
    【25】	172.253.115.90	 237ms
    【26】	172.253.112.90	 237ms
    【27】	142.250.11.90	 238ms
    【28】	172.253.114.90	 239ms
    【29】	172.217.222.90	 240ms
    【30】	142.250.31.90	 242ms
    【31】	142.250.105.90	 243ms
    【32】	142.250.98.90	 243ms
    【33】	172.217.203.90	 246ms
    【34】	142.250.112.90	 246ms
    【35】	142.250.97.90	 253ms
    【36】	142.250.111.90	 253ms
    【37】	172.217.204.90	 253ms
    【38】	172.217.192.90	 296ms
    【39】	142.250.0.90	 299ms
    【40】	142.251.5.90	 307ms
    【41】	142.250.110.90	 307ms
    【42】	142.250.27.90	 311ms
    【43】	142.251.9.90	 311ms
    【44】	172.253.116.90	 323ms
    
    最佳IP是:【142.250.4.90】,响应时间:【86ms】
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    在这里插入图片描述

    2、配置hosts文件,

    如果有Switchhosts比较方便,没有的话打开 C:\Windows\System32\drivers\etc\hosts 修改同样可行.

    在这里插入图片描述

    3、翻译结果

    142.250.4.90 这个ip最快延迟86ms.
    在这里插入图片描述

    参考

    1、字符串语法
    2、海象语法

  • 相关阅读:
    面试官:你了解数据湖吗?翻译翻译什么是数据湖
    MySQL【数据处理的增删改】
    win11内存完整性不兼容驱动程序的五种删除方法
    游戏思考20:前缀树用途、实现及优化
    人工智能的发展前景如何
    基于SpringBoot的家电销售电商管理平台
    Python-模块系列-zip()函数-range()函数-sum()函数-shuffle() 随机函数
    基于SSM的医院在线挂号预约系统的设计与实现
    2022 Cloud Native Computing代表厂商 | 灵雀云第三次入选Gartner中国ICT技术成熟度曲线报告
    Kafka无法对外暴露端口的相关解决方案
  • 原文地址:https://blog.csdn.net/MyySophia/article/details/127777533