【Python】使用Python直接获取hosts配置,附 GitHub host 及 Epic host 地址

一. 基础代码

1.基础代码

import socket

# 清空文本
def empty_textfile():
    with open('hosts.txt', 'w') as f:
        f.write('')

# 生成并写入host文件,domainName是生成后范围内的名字,domains是域名数组
def output_hosts(domainName, domains):
    with open('hosts.txt', 'a') as f:
        f.write('\n********************************************\n')
        f.write(f'# {domainName} Start\n')
        for domain in domains:
            print(domain, end='\t')
            try:
                ip = socket.gethostbyname(domain)
                print(ip)
                f.write(f'{ip} {domain}\n')
            except socket.gaierror as e:
                print(f'Unable to resolve {domain}: {e}')
                print('Skipping...')
                f.write(f'# Unable to resolve {domain}: {e}\n')
        f.write(f'# {domainName} End\n')
        f.write('********************************************\n')

# 定义域名数组,该函数可以无限扩展
def get_domains():
    
    # 定义域名数组
    数组名称 = [
    'baidu.com',
    'google.com',
    'bing.com'
    ]
    # 执行域名生成函数
    output_hosts('生成名', 数组名称)

    # Defines an array of domain names
    domains = [
    'baidu.com',
    'google.com',
    'bing.com'
    ]
    # Execute the domain name generation function
    output_hosts('domainName', domains)


    
# 该函数需要保持在最后一行
if __name__ == '__main__':
    empty_textfile()
    get_domains()

2. 可扩展部分代码

# 定义域名数组,该函数可以无限扩展
def get_domains():
    
    # 定义域名数组
    数组名称 = [
    'baidu.com',
    'google.com',
    'bing.com'
    ]
    # 执行域名生成函数
    output_hosts('生成名', 数组名称)

    # Defines an array of domain names
    domains = [
    'baidu.com',
    'google.com',
    'bing.com'
    ]
    # Execute the domain name generation function
    output_hosts('domainName', domains)

二. 域名表

1. GitHub域名表

    # GitHub
    github_domains = [
        'github.com',
        'gist.github.com',
        'assets-cdn.github.com',
        'raw.githubusercontent.com',
        'gist.githubusercontent.com',
        'cloud.githubusercontent.com',
        'camo.githubusercontent.com',
        'avatars0.githubusercontent.com',
        'avatars1.githubusercontent.com',
        'avatars2.githubusercontent.com',
        'avatars3.githubusercontent.com',
        'avatars4.githubusercontent.com',
        'avatars5.githubusercontent.com',
        'avatars6.githubusercontent.com',
        'avatars7.githubusercontent.com',
        'avatars8.githubusercontent.com',
        'avatars.githubusercontent.com',
        'github.githubassets.com',
        'user-images.githubusercontent.com',
        'codeload.github.com',
        'favicons.githubusercontent.com',
        'api.github.com'
        ]
    output_hosts('GitHub', github_domains)

2. EPIC域名表

其实大部分都没用,跑不通的删掉就行

    # Epic
    epic_domains = [
        'epicgames.com',
        'unrealengine.com',
        'accounts.epicgames.com',
        'fortnite.com',
        'cdn1.epicgames.com',
        'cdn2.epicgames.com',
        'cdn3.epicgames.com',
        'cdn4.epicgames.com',
        'cdn5.epicgames.com',
        'cdn6.epicgames.com',
        'cdn7.epicgames.com',
        'cdn8.epicgames.com',
        'static-assets-prod.epicgames.com',
        'account-public-service-prod03.ol.epicgames.com',
        'launcher-public-service-prod06.ol.epicgames.com',
        'catalog-public-service-prod06.ol.epicgames.com',
        'download.epicgames.com',
        'download2.epicgames.com',
        'download3.epicgames.com',
        'download4.epicgames.com',
        'download5.epicgames.com',
        'download6.epicgames.com',
        'download7.epicgames.com',
        'download8.epicgames.com',
        'download9.epicgames.com',
        'prod-marketplaceeditor.epicgames.com',
        'tags-public-service-live.ol.epicgames.com',
        'tags-public-service-live.ol.epicgames.com',
        'ufesharedservices-public-service-prod.ol.epicgames.com',
        'us-east-1.epicgames.com',
        'us-east-2.epicgames.com',
        'us-west-1.epicgames.com',
        'us-west-2.epicgames.com'
    ]
    output_hosts('Epic', epic_domains)

三. 完整代码(附EPIC与GitHub域名)

该部分为完整代码,可直接复制使用

import socket

# 清空文本
def empty_textfile():
    with open('hosts.txt', 'w') as f:
        f.write('')

# 生成并写入host文件,domainName是生成后范围内的名字,domains是域名数组
def output_hosts(domainName, domains):
    with open('hosts.txt', 'a') as f:
        f.write('\n********************************************\n')
        f.write(f'# {domainName} Start\n')
        for domain in domains:
            print(domain, end='\t')
            try:
                ip = socket.gethostbyname(domain)
                print(ip)
                f.write(f'{ip} {domain}\n')
            except socket.gaierror as e:
                print(f'Unable to resolve {domain}: {e}')
                print('Skipping...')
                f.write(f'# Unable to resolve {domain}: {e}\n')
        f.write(f'# {domainName} End\n')
        f.write('********************************************\n')

# 定义域名数组,该函数可以无限扩展
def get_domains():
    
        # GitHub
    github_domains = [
        'github.com',
        'gist.github.com',
        'assets-cdn.github.com',
        'raw.githubusercontent.com',
        'gist.githubusercontent.com',
        'cloud.githubusercontent.com',
        'camo.githubusercontent.com',
        'avatars0.githubusercontent.com',
        'avatars1.githubusercontent.com',
        'avatars2.githubusercontent.com',
        'avatars3.githubusercontent.com',
        'avatars4.githubusercontent.com',
        'avatars5.githubusercontent.com',
        'avatars6.githubusercontent.com',
        'avatars7.githubusercontent.com',
        'avatars8.githubusercontent.com',
        'avatars.githubusercontent.com',
        'github.githubassets.com',
        'user-images.githubusercontent.com',
        'codeload.github.com',
        'favicons.githubusercontent.com',
        'api.github.com'
        ]
    output_hosts('GitHub', github_domains)

    # Epic
    epic_domains = [
        'epicgames.com',
        'cdn1.epicgames.com',
        'cdn2.epicgames.com',
        'cdn3.epicgames.com',
        'cdn4.epicgames.com',
        'cdn5.epicgames.com',
        'cdn6.epicgames.com',
        'cdn7.epicgames.com',
        'cdn8.epicgames.com',
        'static-assets-prod.epicgames.com',
        'account-public-service-prod03.ol.epicgames.com',
        'launcher-public-service-prod06.ol.epicgames.com',
        'catalog-public-service-prod06.ol.epicgames.com',
        'download.epicgames.com',
        'download2.epicgames.com',
        'download3.epicgames.com',
        'download4.epicgames.com',
        'download5.epicgames.com',
        'download6.epicgames.com',
        'download7.epicgames.com',
        'download8.epicgames.com',
        'download9.epicgames.com',
        'prod-marketplaceeditor.epicgames.com',
        'tags-public-service-live.ol.epicgames.com',
        'tags-public-service-live.ol.epicgames.com',
        'ufesharedservices-public-service-prod.ol.epicgames.com',
        'us-east-1.epicgames.com',
        'us-east-2.epicgames.com',
        'us-west-1.epicgames.com',
        'us-west-2.epicgames.com'
    ]
    output_hosts('Epic', epic_domains)

# 该函数需要保持在最后一行
if __name__ == '__main__':
    empty_textfile()
    get_domains()

四. 使用方法

  1. 打开cmd界面

  2. 输入以下代码确认当前环境是否安装了Python并且socket模块是否可用:

    python -c "import socket;print(socket.gethostbyname('google.com'))"
    

    如果系统中已安装Python并且socket模块可用,则将输出谷歌的IP地址。
    在这里插入图片描述

  3. 在终端使用以下代码打开文件:

    python your_file.py
    

    其中,“your_file.py” 是您要运行的Python文件的名称。在运行命令之前,请确保您已经安装了Python并且在环境变量中配置了Python的路径。如果您没有配置Python的路径,则需要使用完整的Python路径来运行文件。例如,如果您在Windows上安装了Python,并且安装在默认路径(C:\PythonXX),则运行以下命令:

    C:\PythonXX\python.exe your_file.py
    

    运行命令后,Python解释器将执行您的Python代码,并将输出打印到终端或命令提示符窗口中。请注意,如果您的Python代码需要读取或写入文件,您需要在命令行中提供文件路径。
    在这里插入图片描述效果图
    4. 打开在相同文件夹中生成的hosts文件,检查并复制到下方Windows目录hosts文件中, 删除txt后缀

     C:\Windows\System32\drivers\etc\
    

在这里插入图片描述
5. 打开可查看host的相关软件或cmd中输入代码(本文使用为powertoys),可以注意到 Hosts 已被成功配置
在这里插入图片描述
EPIC 下载速度直接涨
在这里插入图片描述

五. 问题解决

1. 如何安装Python的socket模块

  1. 确认你已经正确安装 Python 并已配置环境变量。可以通过在命令行中输入 python -V 来检查 Python 的版本号。
  2. 如果 Python 安装已损坏或被删除,需要重新安装 Python。
  3. 如果 socket 模块未正确安装或配置,你可以尝试使用 pip 命令重新安装该模块。打开命令行窗口并输入以下命令:
    pip install socket
    
  4. 如果上述命令无法正常工作,可以尝试使用以下命令安装 socket 模块:
    pip install -U socket
    
  5. 如果你没有安装 pip,可以下载 pip 安装脚本(get-pip.py)并在命令行中运行该脚本以安装 pip。可以在以下网址中下载 get-pip.py:
    https://bootstrap.pypa.io/get-pip.py
    
  6. 下载后,运行以下命令以安装 pip:
    python get-pip.py
    
  7. 确认是否已经正确安装 pip,可以在命令行中输入以下命令:
    pip --version
    
    如果出现 pip 的版本号,则说明已正确安装。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉小兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值