github重置ip程序

2022/2/12 9:14:37

本文主要是介绍github重置ip程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

github重置ip程序

github是一个全球最大的一个程序员代码托管服务平台,我们可以把自己的项目放到上面供大家学习与交流,我们也可以在上面找到很多实用有趣的项目,虽然国内开放github的网页浏览,但是那个速度,还得看服务器的脸色行事,经常打不开网页也是常有的事。网上的方法有很多,最主要是通过修改hosts文件,直接绕过DNS解析实现一个快速浏览,因此一起来开发一个github快速重置ip修改hosts文件程序吧。

本质上是调用了requests模块从网上获取github的ip并导入更新hosts文件,而这个网站的数据更新频率很快,最好是每次频繁github时再更新

开发环境

  • Python
  • pycharm
  • requests,ctypes等库

新建一个新的Python项目,并导入所需的包

  • _future_
  • ctypes
  • sys
  • requests
  • os

调用request模块获取网站数据

url = "https://raw.hellogithub.com/hosts"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'}

response = requests.get(url=url,headers=headers)

提供管理员权限

由于需要修改windows系统文件,需要提供权限,否则会修改失败

# 提供权限
def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

把获取到的数据存储进hosts文件

if is_admin():
    # 将要运行的代码加到这里
    with open("C:/Windows/System32/drivers/etc/hosts", "w") as f:
        f.write("127.0.0.1 localhost\n")
    with open("C:/Windows/System32/drivers/etc/hosts", "ab") as f:
        f.write(response.content)

else:
    if sys.version_info[0] == 3:
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    else:#in python2.x
        pass

刷新 DNS 解析缓存。

DOS = "ipconfig /flushdns"
dos = os.system(DOS)

完整代码

from __future__ import print_function
import ctypes, sys
import requests
import os


url = "https://raw.hellogithub.com/hosts"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'}

response = requests.get(url=url,headers=headers)

# 提供权限
def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
if is_admin():
    # 将要运行的代码加到这里
    with open("C:/Windows/System32/drivers/etc/hosts", "w") as f:
        f.write("127.0.0.1 localhost\n")
    with open("C:/Windows/System32/drivers/etc/hosts", "ab") as f:
        f.write(response.content)

else:
    if sys.version_info[0] == 3:
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    else:#in python2.x
        pass
        # ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

# 若需要刷新 DNS 解析缓存,cmd中执行:ipconfig /flushdns
print("***********************************")
DOS = "ipconfig /flushdns"
dos = os.system(DOS)
print("***********************************")
print("github的IP地址更新完成")
if dos == 0:
    print("已成功刷新 DNS 解析缓存。")
else:
    print("刷新 DNS 解析缓存失败!")


最后总结一下,本次用到的一个思路还是很简单的,主要用到一个获取数据和获取权限写入文件,最重要的是要有思路!!!



这篇关于github重置ip程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程