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 解析缓存失败!")
最后总结一下,本次用到的一个思路还是很简单的,主要用到一个获取数据和获取权限写入文件,最重要的是要有思路!!!