【pyside6 拓展】QNetworkProxy代理服务器
文章目录
- pyside6 拓展:QNetworkProxy 使用入门
- 1️⃣ QNetworkProxy 是什么?
- 2️⃣ QNetworkProxy 的常见用途
- 基本使用示例:使用代理发起请求
- 3️⃣ QNetworkProxy 常用函数
- 1. `setType()` —— 设置代理类型
- 2. `setHostName()` —— 设置代理服务器地址
- 3. `setPort()` —— 设置代理服务器端口
- 4. `setUser()` —— 设置代理认证用户名
- 5. `setPassword()` —— 设置代理认证密码
- 6. `setCapabilities()` —— 设置代理的功能
- 7. `hostName()` —— 获取代理服务器地址
- 8. `port()` —— 获取代理服务器端口
- 9. `proxyType()` —— 获取代理类型
- 4️⃣ 全局代理设置
- 5️⃣ 总结
pyside6 拓展:QNetworkProxy 使用入门
1️⃣ QNetworkProxy 是什么?
QNetworkProxy
是 Qt 网络模块 (QtNetwork
) 中的一个类,用于管理和配置 代理服务器 设置。代理服务器通常用于 隐匿身份、绕过防火墙、提高安全性 等目的。
在 Qt 中,QNetworkProxy
允许应用程序通过指定代理来执行 网络请求,这对于需要代理连接的应用场景(如企业环境、公共网络等)非常重要。
📌 主要功能:
- 配置 代理服务器(HTTP、SOCKS 等协议)
- 设置 代理认证信息
- 支持 全局代理设置,影响所有网络请求
- 支持多种 代理类型(HTTP、SOCKS、自动代理)
2️⃣ QNetworkProxy 的常见用途
QNetworkProxy
可以用于 配置和管理代理设置,在使用 QNetworkAccessManager
时,可以设置代理,以便通过代理服务器进行所有的网络请求。
基本使用示例:使用代理发起请求
from PySide6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkProxy
from PySide6.QtCore import QUrl
# 创建 QNetworkAccessManager 实例
manager = QNetworkAccessManager()
# 创建 QNetworkProxy 实例,设置代理
proxy = QNetworkProxy()
proxy.setType(QNetworkProxy.HttpProxy) # 使用 HTTP 代理
proxy.setHostName("proxy.example.com") # 代理服务器地址
proxy.setPort(8080) # 代理服务器端口
proxy.setUser("username") # 代理用户名
proxy.setPassword("password") # 代理密码
# 设置代理
manager.setProxy(proxy)
# 创建请求
url = QUrl("http://example.com")
request = QNetworkRequest(url)
# 发送请求
reply = manager.get(request)
📌 解释:
QNetworkProxy()
用于创建代理对象。setType()
设置代理类型(例如 HTTP 代理)。setHostName()
设置代理服务器地址。setPort()
设置代理服务器端口。setUser()
和setPassword()
用于设置代理认证信息。
3️⃣ QNetworkProxy 常用函数
1. setType()
—— 设置代理类型
作用:设置代理的类型,决定代理服务器支持的协议。
原型:
def setType(self, type: QNetworkProxy.ProxyType)
参数:
type
:代理类型,类型为QNetworkProxy.ProxyType
。
返回值:
- 无返回值。
可能的取值:
取值 | 含义 |
---|---|
QNetworkProxy.NoProxy | 不使用代理 |
QNetworkProxy.HttpProxy | HTTP 代理 |
QNetworkProxy.Socks5Proxy | SOCKS5 代理 |
QNetworkProxy.FtpProxy | FTP 代理 |
示例:
proxy.setType(QNetworkProxy.HttpProxy) # 设置 HTTP 代理
2. setHostName()
—— 设置代理服务器地址
作用:设置代理服务器的 主机名或 IP 地址。
原型:
def setHostName(self, hostName: str)
参数:
hostName
:代理服务器的主机名或 IP 地址。
返回值:
- 无返回值。
示例:
proxy.setHostName("proxy.example.com") # 设置代理服务器地址
3. setPort()
—— 设置代理服务器端口
作用:设置代理服务器的 端口号。
原型:
def setPort(self, port: int)
参数:
port
:代理服务器的端口号。
返回值:
- 无返回值。
示例:
proxy.setPort(8080) # 设置代理服务器端口
4. setUser()
—— 设置代理认证用户名
作用:设置 代理认证的用户名(如果需要认证)。
原型:
def setUser(self, user: str)
参数:
user
:代理认证所需的用户名。
返回值:
- 无返回值。
示例:
proxy.setUser("username") # 设置代理认证的用户名
5. setPassword()
—— 设置代理认证密码
作用:设置 代理认证的密码(如果需要认证)。
原型:
def setPassword(self, password: str)
参数:
password
:代理认证所需的密码。
返回值:
- 无返回值。
示例:
proxy.setPassword("password") # 设置代理认证的密码
6. setCapabilities()
—— 设置代理的功能
作用:设置代理支持的功能(例如支持的协议等)。
原型:
def setCapabilities(self, capabilities: QNetworkProxy.Capabilities)
参数:
capabilities
:代理的功能,类型为QNetworkProxy.Capabilities
。
返回值:
- 无返回值。
可能的取值:
取值 | 含义 |
---|---|
QNetworkProxy.ProxyType | 代理类型 |
QNetworkProxy.AuthRequired | 是否需要认证 |
示例:
proxy.setCapabilities(QNetworkProxy.AuthRequired) # 设置代理需要认证
7. hostName()
—— 获取代理服务器地址
作用:获取代理服务器的 主机名或 IP 地址。
原型:
def hostName(self) -> str
返回值:
str
:代理服务器的主机名或 IP 地址。
示例:
print(proxy.hostName()) # 输出代理服务器地址
8. port()
—— 获取代理服务器端口
作用:获取代理服务器的 端口号。
原型:
def port(self) -> int
返回值:
int
:代理服务器的端口号。
示例:
print(proxy.port()) # 输出代理服务器端口
9. proxyType()
—— 获取代理类型
作用:获取当前代理的 类型。
原型:
def proxyType(self) -> QNetworkProxy.ProxyType
返回值:
QNetworkProxy.ProxyType
:代理类型,可能的值有HttpProxy
、Socks5Proxy
等。
示例:
print(proxy.proxyType()) # 输出代理类型
4️⃣ 全局代理设置
Qt 允许你为所有的网络请求设置 全局代理,即所有通过 QNetworkAccessManager
发起的请求都将使用相同的代理设置。
from PySide6.QtNetwork import QNetworkProxy
from PySide6.QtCore import QCoreApplication
# 创建全局代理
proxy = QNetworkProxy(QNetworkProxy.HttpProxy, "proxy.example.com", 8080)
QNetworkProxy.setApplicationProxy(proxy)
# 使用代理发起请求
app = QCoreApplication([])
manager = QNetworkAccessManager()
📌 解释:
QNetworkProxy.setApplicationProxy(proxy)
设置 全局代理。- 之后的所有请求都会使用指定的代理。
5️⃣ 总结
📌 核心 API 总结:
函数 | 作用 |
---|---|
setType() | 设置代理类型(如 HTTP、SOCKS) |
setHostName() | 设置代理服务器的地址 |
setPort() | 设置代理服务器的端口 |
setUser() | 设置代理认证的用户名 |
setPassword() | 设置代理认证的密码 |
setCapabilities() | 设置代理功能(如是否需要认证) |
hostName() | 获取代理服务器地址 |
port() | 获取代理服务器端口 |
proxyType() | 获取代理类型 |
🎯 QNetworkProxy
使得 Qt 应用程序能够方便地配置代理服务器,用于需要通过 代理服务器 访问网络的应用场景(如企业环境、公共 WiFi 网络等)。