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 解析缓存失败!")

在这里插入图片描述


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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

進擊的小鹿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值