文章目录
- 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 网络等)。
评论前必须登录!
注册