• Github修改hosts文件实现国内访问加速


    1. hosts所在的文件夹:
      1.  Windows 系统位于 C:WindowsSystem32driversetc Mac
      2. 苹果系统hosts位于 /etc/ Linux系统hosts位于 /etc/ 绝大多数Unix系统都是在 /etc/
      3. 最好把hosts文件备份一下,把hosts文件拷贝一份后改个名即可。
    2. 打开DNS查询:站长之家DNS查询页面      切换到DNS选项
    3. 查询http://github.com和http://github.global.ssl.fastly.net选择TTL最小的DNS,复制ip地址,可以多复制几个。
    4. 把复制好的IP地址添加到hosts文件中,类似于这个样子140.82.113.3 http://github.com 140.82.113.3 http://github.global.ssl.fastly.net
    5. 让hosts生效

      Windows:开始 -> 运行 -> 输入cmd -> 在CMD窗口输入 : ipconfig /flushdns
      Linux:终端输入 : sudo rcnscd restart
      Mac OS X终端输入 : sudo killall -HUP mDNSResponder   

      其他:断网,再开网
      终极方法: 重启机器

      第二种方法:https://gist.github.com/2033329616/02665f19270ee562108defe8d4be361c

      在上述第2步运行下面的程序获取github的有效IP更新host文件和网络配置

     

    import re
    import time
    import  requests
    from selenium import webdriver
    from bs4 import BeautifulSoup
    
    class GetIP(object):
        def __init__(self, driver_path='E:\test\chromedriver.exe'):
            """
            driver_path:the path of the chrome driver, which is downloaded from http://chromedriver.storage.googleapis.com/index.html
            note the version should be corresponding between chrome driver and chrome webbrowser 
            """
            self.path = driver_path 
            self.urls = [
                "https://github.com.ipaddress.com/www.github.com",
                "https://github.com.ipaddress.com/",                         #github.com
                "https://github.com.ipaddress.com/gist.github.com",
                "https://githubusercontent.com.ipaddress.com/gist.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/raw.githubusercontent.com",
                "https://github.com.ipaddress.com/assets-cdn.github.com",
                "https://githubusercontent.com.ipaddress.com/cloud.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/camo.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars0.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars1.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars2.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars3.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars4.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars5.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars6.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars7.githubusercontent.com",
                "https://githubusercontent.com.ipaddress.com/avatars8.githubusercontent.com",
            ]
        
        def getip_req(self, url):
            """
            use request to get the ip of github (better and faster)
            url: the url which ip you want to search
            """
            response = requests.get(url)  # 部分网站可用
            status = response.status_code 
        #     print(status)
            # print (response.headers['content-type'])
            soup = BeautifulSoup(response.content,"html.parser")     # ,from_encoding="utf-8")
            link_node = soup.find('a',href=re.compile(r"ipv4"))
            ip = link_node.get_text() if status == 200 else None     # success 200, fail 404
            return ip
        
        def getip_sel(self, url):
            """
            use selenium to get the ip of github
            url: the url which ip you want to search 
            """
            self.driver = webdriver.Chrome(executable_path=self.path)
            self.driver.get('https://github.com.ipaddress.com')
            self.driver.implicitly_wait(7)
            inputElement = self.driver.find_elements_by_name('host')
            searchButton = self.driver.find_elements_by_class_name('search')
            inputElement[0].send_keys(url)                  # search url in search box
            searchButton[0].click()                         # click the corresponding button
            browser_res = self.driver.page_source
    #         print(browser_res)
            soup = BeautifulSoup(browser_res,"html.parser") # ,from_encoding="utf-8")
            link_node = soup.find('a',href=re.compile(r"ipv4"))
            # print (link_node.name,link_node['href'],link_node.get_text())
            return link_node.get_text() if link_node != None else None   # get the ip of the url
        
        def github_hosts(self, get_type=0):
            """
            get_type: the way we use to get ip, get_type=0:request(default) | get_type=1:selenium
            """
            success_hosts = {}
            failure_hosts = {}
            
            for url in self.urls:
                host_url = url.strip().split('/')[-1]
                host_url = host_url if host_url != '' else 'github.com'
                try:
        #             print(host)
                    ip = self.getip_req(url) if get_type==0 else self.getip_sel(host_url)
            
                    print(ip, host_url)
                    if ip == None:
                        failure_hosts[host_url] = ip   # sometimes different host has the same ip
                    else:
                        success_hosts[host_url] = ip
                    
                    if get_type == 1:     
                        time.sleep(0.7)
                        self.driver.quit()
                except Exception as err:
                    failure_hosts[host_url] = None
                    print(err)
            print('------------------------------------------------')
            print('faiure_hosts:
    ', failure_hosts)
            print('------------------------------------------------')
            print('success_hosts:')
            for k, v in success_hosts.items():
                print(v, k)
            print('------------------------------------------------')
            
    if __name__ == '__main__':  
        ip_obj = GetIP()
        ip_obj.github_hosts(get_type=0)  
  • 相关阅读:
    向存储过程中传入列表参数
    TRUNCATE TABLE (Transact-SQL)
    Program.cs
    联想G40-30 安装win10系统
    完美解决github访问速度慢[转]
    关于Visual studio 2017安装方法的若干问题
    [转载] 中国象棋软件-引擎实现(七)测试程序
    [转载] 中国象棋软件-引擎实现(六)局面评估
    [转载] 中国象棋软件-引擎实现(五)历史启发及着法排序
    [转载] 中国象棋软件-引擎实现(四)搜索算法
  • 原文地址:https://www.cnblogs.com/mlh-bky/p/14753320.html
Copyright © 2020-2023  润新知