首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Windows神器:告别IP限制,IP自动切换软件(附源码)

Windows神器:告别IP限制,IP自动切换软件(附源码)

作者头像
释然IT杂谈
发布2024-11-23 15:55:46
发布2024-11-23 15:55:46
1.1K0
举报
文章被收录于专栏:释然IT杂谈释然IT杂谈

下载地址:

附源码和EXE文件

夸克链接:https://pan.quark.cn/s/9be6bb03e7f7

百度链接:

https://pan.baidu.com/s/1Ph4g-Ln2a4FDD2ZCEQCFgQ?pwd=tqdj

提取码:tqdj

Python源码:

源码解析:

导入模块

代码语言:javascript
复制
import requests
import json
import os
import subprocess
import time
import sys
import logging
import tkinter as tk
from tkinter import scrolledtext
from threading import Thread, Event

这部分代码导入了程序所需的所有Python模块。例如,requests用于发起网络请求,logging用于日志记录,tkinter用于构建图形用户界面等。

设置输出编码

代码语言:javascript
复制
# 设置输出编码为 UTF-8

这行注释说明了代码应该设置输出编码为UTF-8,但在实际代码中并没有设置。通常这会通过添加sys.stdout.reconfigure(encoding='utf-8')来实现。

自定义日志处理器

代码语言:javascript
复制
class ScrolledTextHandler(logging.Handler):
    # ...

ScrolledTextHandler类是自定义的日志处理器,它将日志信息输出到Tkinter的文本框中。这允许GUI显示日志信息。

通用函数递归提取代理信息

代码语言:javascript
复制
def extract_proxy_info(data):
    # ...

extract_proxy_info函数用于从API返回的数据中递归提取代理的IP地址、端口和地址信息。它定义了可能包含这些信息的键,并使用递归函数recursive_extract来搜索这些键。

从API获取代理IP和端口

代码语言:javascript
复制
def get_proxy(api_url):
    # ...

get_proxy函数通过向API发送GET请求来获取代理信息,然后调用extract_proxy_info来解析这些信息。

配置HTTP代理

代码语言:javascript
复制
def set_http_proxy(ip, port):
    # ...

set_http_proxy函数设置了环境变量HTTP_PROXYHTTPS_PROXY,这样程序就可以通过指定的HTTP代理进行网络请求。

关闭HTTP代理

代码语言:javascript
复制
def disable_http_proxy():
    # ...

disable_http_proxy函数清除了HTTP_PROXYHTTPS_PROXY环境变量,从而禁用了HTTP代理。

设置Windows全局代理

代码语言:javascript
复制
def set_windows_proxy(ip, port):
    # ...

set_windows_proxy函数通过修改Windows注册表来设置全局代理,这样所有通过Windows系统进行的网络请求都会使用这个代理。

关闭Windows全局代理

代码语言:javascript
复制
def disable_windows_proxy():
    # ...

disable_windows_proxy函数通过修改注册表来禁用全局代理。

访问百度并检查HTTP状态码

代码语言:javascript
复制
def check_baidu():
    # ...

check_baidu函数尝试访问百度,检查HTTP状态码是否为200,以验证代理是否有效。

运行代理的循环逻辑

代码语言:javascript
复制
def run_proxy(api_url, stop_event, switch_interval):
    # ...

run_proxy函数包含了代理切换的循环逻辑。它在一个循环中定期获取新的代理,并根据stop_event的信号来停止代理切换。

图形界面类

代码语言:javascript
复制
class App:
    # ...

App类定义了应用程序的GUI组件和逻辑。它初始化GUI元素,定义了启动和停止代理的按钮,并处理相关的事件。

主函数

代码语言:javascript
复制
if __name__ == "__main__":
    # ...

程序的入口点,创建Tkinter的主窗口,实例化App类,并启动GUI的主事件循环。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 导入模块
  • 设置输出编码
  • 自定义日志处理器
  • 通用函数递归提取代理信息
  • 从API获取代理IP和端口
  • 配置HTTP代理
  • 关闭HTTP代理
  • 设置Windows全局代理
  • 关闭Windows全局代理
  • 访问百度并检查HTTP状态码
  • 运行代理的循环逻辑
  • 图形界面类
  • 主函数
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档