PySide6.QtNetwork.QNetworkProxy

class QNetworkProxy

QNetworkProxy 类提供了一个网络层代理。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QNetworkProxy 提供了为Qt网络类配置网络层代理支持的方法。目前支持的类有 QAbstractSocketQTcpSocketQUdpSocketQTcpServerQNetworkAccessManager 。代理支持设计得尽可能透明。这意味着您编写的现有支持网络的应用程序应自动支持使用以下代码的网络代理。

proxy = QNetworkProxy()
proxy.setType(QNetworkProxy.Socks5Proxy)
proxy.setHostName("proxy.example.com")
proxy.setPort(1080)
proxy.setUser("username")
proxy.setPassword("password")
QNetworkProxy.setApplicationProxy(proxy)

设置应用程序范围的代理的替代方法是使用 setProxy()setProxy() 为单个套接字指定代理。通过这种方式,可以使用以下代码禁用特定套接字的代理:

serverSocket.setProxy(QNetworkProxy.NoProxy)

如果在connectToHost()bind()listen()中使用的地址等同于LocalHostLocalHostIPv6,则不使用网络代理。

每种代理支持都有其相关的限制。在选择使用代理类型之前,您应仔细阅读ProxyType文档。

注意

对当前连接的套接字所做的更改不会生效。如果您需要更改已连接的套接字,应重新连接它。

SOCKS5

自Qt 4以来的SOCKS5支持基于RFC 1928RFC 1929。支持的认证方法包括无认证和用户名/密码认证。同时支持IPv4和IPv6。如果启用了HostNameLookupCapability,域名将通过SOCKS5服务器解析,否则它们将在本地解析,并将IP地址发送到服务器。在使用SOCKS5与QUdpSocketQTcpServer时,有几件事情需要记住:

使用 QUdpSocket 时,调用 bind() 可能会因超时错误而失败。如果将非0的端口号传递给 bind() ,不能保证将使用指定的端口。使用 localPort()localAddress() 来获取实际使用的地址和端口号。由于代理的UDP通过两个UDP连接,数据包丢失的可能性更大。

使用 QTcpServer 时,调用 listen() 可能会因超时错误而失败。如果将非0的端口号传递给 listen(),则不能保证将使用指定的端口。使用 serverPort()serverAddress() 来获取实际用于监听连接的地址和端口。SOCKS5 每次调用 listen() 仅支持一个接受的连接,并且每次调用可能会使用不同的 serverPort()

class ProxyType

此枚举描述了Qt中提供的网络代理类型。

Qt 理解的代理有两种类型:透明代理和缓存代理。第一组由可以处理任意数据传输的代理组成,而第二组只能处理特定请求。缓存代理仅对可以使用的特定类有意义。

常量

描述

QNetworkProxy.NoProxy

不使用代理

QNetworkProxy.DefaultProxy

代理是根据使用setApplicationProxy()设置的应用程序代理确定的

QNetworkProxy.Socks5Proxy

Socks5 代理被使用

QNetworkProxy.HttpProxy

使用HTTP透明代理

QNetworkProxy.HttpCachingProxy

仅代理HTTP请求

QNetworkProxy.FtpCachingProxy

仅代理FTP请求

下表列出了不同的代理类型及其功能。由于每种代理类型具有不同的功能,因此在选择代理类型之前了解它们非常重要。

代理类型

描述

默认功能

SOCKS 5

适用于任何类型连接的通用代理。支持TCP、UDP、绑定到端口(传入连接)和身份验证。

TunnelingCapability , ListeningCapability , UdpTunnelingCapability , HostNameLookupCapability

HTTP

使用“CONNECT”命令实现,仅支持出站TCP连接;支持认证。

TunnelingCapability , CachingCapability , HostNameLookupCapability

仅缓存的HTTP

使用普通的HTTP命令实现,仅在HTTP请求的上下文中有用(参见QNetworkAccessManager

CachingCapability , HostNameLookupCapability

缓存FTP

使用FTP代理实现,仅在FTP请求的上下文中有用(参见 QNetworkAccessManager

CachingCapability , HostNameLookupCapability

还请注意,您不应将应用程序默认代理(setApplicationProxy())设置为没有TunnelingCapability功能的代理。如果这样做,QTcpSocket将不知道如何打开连接。

class Capability

(继承自 enum.Flag) 这些标志表示给定代理服务器支持的功能。

QNetworkProxy 在对象创建时默认设置不同的功能(有关默认值的列表,请参见 ProxyType)。然而,可以在对象创建后使用 setCapabilities() 更改这些功能。

QNetworkProxy 支持的功能有:

常量

描述

QNetworkProxy.TunnelingCapability

能够打开透明的、隧道化的TCP连接到远程主机。代理服务器将传输内容逐字从一端中继到另一端,并且不进行缓存。

QNetworkProxy.ListeningCapability

能够创建一个监听套接字并等待来自远程主机的传入TCP连接。

QNetworkProxy.UdpTunnelingCapability

能够通过代理服务器将UDP数据报中继到远程主机并从远程主机中继。

QNetworkProxy.CachingCapability

能够缓存传输内容的能力。此能力特定于每个协议和代理类型。例如,HTTP代理可以缓存使用“GET”命令传输的网页数据内容。

QNetworkProxy.HostNameLookupCapability

能够连接到远程主机名并执行查找,而不是要求应用程序执行名称查找并仅请求连接到IP地址。

QNetworkProxy.SctpTunnelingCapability

能够打开透明的、隧道化的SCTP连接到远程主机。

QNetworkProxy.SctpListeningCapability

能够创建一个监听套接字并等待来自远程主机的传入SCTP连接。

__init__()

使用DefaultProxy类型构造一个QNetworkProxy

代理类型由applicationProxy()决定,默认情况下为NoProxy,如果配置了系统范围的代理,则使用该代理。

__init__(other)
Parameters:

其他QNetworkProxy

构造other的副本。

__init__(type[, hostName=""[, port=0[, user=""[, password=""]]]])
Parameters:
  • typeProxyType

  • hostName – str

  • port – int

  • user – str

  • password – str

使用typehostNameportuserpassword构造一个QNetworkProxy

代理类型 type 的默认功能会自动设置。

另请参阅

capabilities()

static applicationProxy()
Return type:

QNetworkProxy

返回应用程序级别的网络代理。

如果 QAbstractSocketQTcpSocket 具有 DefaultProxy 类型,则使用此函数返回的 QNetworkProxy

capabilities()
Return type:

Capability的组合

返回此代理服务器的功能。

另请参阅

setCapabilities() type()

hasRawHeader(headerName)
Parameters:

headerNameQByteArray

Return type:

布尔

如果原始头 headerName 正在用于此代理,则返回 true。如果代理不是 HttpProxyHttpCachingProxy 类型,则返回 false

header(header)
Parameters:

头部KnownHeaders

Return type:

对象

如果此代理正在使用已知的网络头header,则返回其值。如果不存在,则返回QVariant()(即无效的变体)。

headers()
Return type:

QHttpHeaders

返回在此网络请求中设置的标头。

如果代理不是HttpProxyHttpCachingProxy类型,则返回默认构造的QHttpHeaders

另请参阅

setHeaders()

hostName()
Return type:

字符串

返回代理主机的主机名。

isCachingProxy()
Return type:

布尔

如果此代理支持CachingCapability能力,则返回true

在Qt 4.4中,该功能与代理类型绑定,但从Qt 4.5开始,可以通过调用setCapabilities()来移除代理的缓存功能。

isTransparentProxy()
Return type:

布尔

如果此代理支持TCP连接的透明隧道传输,则返回true。这与TunnelingCapability功能相匹配。

在Qt 4.4中,该功能与代理类型绑定,但从Qt 4.5开始,可以通过调用setCapabilities()来移除代理的缓存功能。

__ne__(other)
Parameters:

其他QNetworkProxy

Return type:

布尔

将此网络代理的值与other进行比较,如果它们不同,则返回true

__eq__(other)
Parameters:

其他QNetworkProxy

Return type:

布尔

将此网络代理的值与other进行比较,如果它们相等(相同的代理类型、服务器以及用户名和密码),则返回true

password()
Return type:

字符串

返回用于身份验证的密码。

port()
Return type:

整数

返回代理主机的端口。

rawHeader(headerName)
Parameters:

headerNameQByteArray

Return type:

QByteArray

返回头部 headerName 的原始形式。如果不存在这样的头部或代理类型不是 HttpProxyHttpCachingProxy,则返回一个空的 QByteArray,这可能与存在但没有内容的头部无法区分(使用 hasRawHeader() 来查找头部是否存在)。

原始头信息可以通过setRawHeader()setHeader()来设置。

另请参阅

header() setRawHeader()

rawHeaderList()
Return type:

.list of QByteArray

返回在此网络代理中设置的所有原始标头的列表。列表按标头设置的顺序排列。

如果代理不是HttpProxyHttpCachingProxy类型,则返回一个空的QList。

static setApplicationProxy(proxy)
Parameters:

代理QNetworkProxy

将应用程序级别的网络代理设置为networkProxy

如果 QAbstractSocketQTcpSocket 具有 DefaultProxy 类型,则使用此函数设置的 QNetworkProxy。如果您希望在确定使用哪个代理时具有更大的灵活性,请使用 QNetworkProxyFactory 类。

使用此函数设置默认代理值将覆盖使用setApplicationProxyFactory设置的应用程序代理工厂,并禁用系统代理的使用。

setCapabilities(capab)
Parameters:

capabCapability 的组合

将此代理的功能设置为capabilities

另请参阅

setType() capabilities()

setHeader(header, value)
Parameters:

将已知头header的值设置为value,覆盖任何先前设置的头。此操作还会设置等效的原始HTTP头。

如果代理不是HttpProxyHttpCachingProxy类型,则此操作无效。

setHeaders(newHeaders)
Parameters:

newHeadersQHttpHeaders

这是一个重载函数。

setHostName(hostName)
Parameters:

hostName – str

将代理主机的主机名设置为hostName

另请参阅

hostName() setPort() port()

setPassword(password)
Parameters:

password – str

将代理认证的密码设置为password

另请参阅

user() setUser() password()

setPort(port)
Parameters:

端口 – int

将代理主机的端口设置为 port

setRawHeader(headerName, value)
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将标头 headerName 设置为值 headerValue。如果 headerName 对应于已知标头(参见 KnownHeaders),原始格式将被解析,并且相应的“已处理”标头也将被设置。

例如:

request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"))

还会将已知的标头 LastModifiedHeader 设置为解析日期的 QDateTime 对象。

注意

设置相同的头部两次会覆盖之前的设置。为了实现同名HTTP头部的多重行为,你应该将两个值连接起来,用逗号(“,”)分隔,并设置一个单一的原始头部。

如果代理不是HttpProxyHttpCachingProxy类型,则此操作无效。

setType(type)
Parameters:

类型ProxyType

设置此实例的代理类型为type

请注意,如果已经使用setCapabilities()设置了任何功能,更改代理的类型不会改变此QNetworkProxy对象所持有的功能集。

另请参阅

type() setCapabilities()

setUser(userName)
Parameters:

userName – str

将代理认证的用户名设置为user

swap(other)
Parameters:

其他QNetworkProxy

将此网络代理实例与other交换。此函数非常快速且永远不会失败。

type()
Return type:

ProxyType

返回此实例的代理类型。

另请参阅

setType()

user()
Return type:

字符串

返回用于身份验证的用户名。