PySide6.QtNetwork.QNetworkProxy¶
- class QNetworkProxy¶
QNetworkProxy类提供了一个网络层代理。更多…概要¶
方法¶
def
__init__()def
capabilities()def
hasRawHeader()def
header()def
headers()def
hostName()def
isCachingProxy()def
__ne__()def
__eq__()def
password()def
port()def
rawHeader()def
rawHeaderList()def
setHeader()def
setHeaders()def
setHostName()def
setPassword()def
setPort()def
setRawHeader()def
setType()def
setUser()def
swap()def
type()def
user()
静态函数¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QNetworkProxy提供了为Qt网络类配置网络层代理支持的方法。目前支持的类有QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer和QNetworkAccessManager。代理支持设计得尽可能透明。这意味着您编写的现有支持网络的应用程序应自动支持使用以下代码的网络代理。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()中使用的地址等同于LocalHost或LocalHostIPv6,则不使用网络代理。每种代理支持都有其相关的限制。在选择使用代理类型之前,您应仔细阅读
ProxyType文档。注意
对当前连接的套接字所做的更改不会生效。如果您需要更改已连接的套接字,应重新连接它。
SOCKS5¶
自Qt 4以来的SOCKS5支持基于RFC 1928和RFC 1929。支持的认证方法包括无认证和用户名/密码认证。同时支持IPv4和IPv6。如果启用了
HostNameLookupCapability,域名将通过SOCKS5服务器解析,否则它们将在本地解析,并将IP地址发送到服务器。在使用SOCKS5与QUdpSocket和QTcpServer时,有几件事情需要记住:使用
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,HostNameLookupCapabilityHTTP
使用“CONNECT”命令实现,仅支持出站TCP连接;支持认证。
TunnelingCapability,CachingCapability,HostNameLookupCapability仅缓存的HTTP
使用普通的HTTP命令实现,仅在HTTP请求的上下文中有用(参见
QNetworkAccessManager)缓存FTP
使用FTP代理实现,仅在FTP请求的上下文中有用(参见
QNetworkAccessManager)还请注意,您不应将应用程序默认代理(
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:
type –
ProxyTypehostName – str
port – int
user – str
password – str
使用
type、hostName、port、user和password构造一个QNetworkProxy。代理类型
type的默认功能会自动设置。另请参阅
- static applicationProxy()¶
- Return type:
返回应用程序级别的网络代理。
如果
QAbstractSocket或QTcpSocket具有DefaultProxy类型,则使用此函数返回的QNetworkProxy。- capabilities()¶
- Return type:
Capability的组合
返回此代理服务器的功能。
另请参阅
- hasRawHeader(headerName)¶
- Parameters:
headerName –
QByteArray- Return type:
布尔
如果原始头
headerName正在用于此代理,则返回true。如果代理不是HttpProxy或HttpCachingProxy类型,则返回false。- header(header)¶
- Parameters:
头部 –
KnownHeaders- Return type:
对象
如果此代理正在使用已知的网络头
header,则返回其值。如果不存在,则返回QVariant()(即无效的变体)。- headers()¶
- Return type:
返回在此网络请求中设置的标头。
如果代理不是
HttpProxy或HttpCachingProxy类型,则返回默认构造的QHttpHeaders。另请参阅
- 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:
headerName –
QByteArray- Return type:
返回头部
headerName的原始形式。如果不存在这样的头部或代理类型不是HttpProxy或HttpCachingProxy,则返回一个空的 QByteArray,这可能与存在但没有内容的头部无法区分(使用hasRawHeader()来查找头部是否存在)。原始头信息可以通过
setRawHeader()或setHeader()来设置。另请参阅
- rawHeaderList()¶
- Return type:
.list of QByteArray
返回在此网络代理中设置的所有原始标头的列表。列表按标头设置的顺序排列。
如果代理不是
HttpProxy或HttpCachingProxy类型,则返回一个空的QList。- static setApplicationProxy(proxy)¶
- Parameters:
代理 –
QNetworkProxy
将应用程序级别的网络代理设置为
networkProxy。如果
QAbstractSocket或QTcpSocket具有DefaultProxy类型,则使用此函数设置的QNetworkProxy。如果您希望在确定使用哪个代理时具有更大的灵活性,请使用QNetworkProxyFactory类。使用此函数设置默认代理值将覆盖使用
setApplicationProxyFactory设置的应用程序代理工厂,并禁用系统代理的使用。- setCapabilities(capab)¶
- Parameters:
capab –
Capability的组合
将此代理的功能设置为
capabilities。另请参阅
- setHeader(header, value)¶
- Parameters:
header –
KnownHeadersvalue – 对象
将已知头
header的值设置为value,覆盖任何先前设置的头。此操作还会设置等效的原始HTTP头。如果代理不是
HttpProxy或HttpCachingProxy类型,则此操作无效。- setHeaders(newHeaders)¶
- Parameters:
newHeaders –
QHttpHeaders
这是一个重载函数。
- setHostName(hostName)¶
- Parameters:
hostName – str
将代理主机的主机名设置为
hostName。另请参阅
- setPassword(password)¶
- Parameters:
password – str
将代理认证的密码设置为
password。另请参阅
- setPort(port)¶
- Parameters:
端口 – int
将代理主机的端口设置为
port。- setRawHeader(headerName, value)¶
- Parameters:
headerName –
QByteArrayvalue –
QByteArray
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将标头
headerName设置为值headerValue。如果headerName对应于已知标头(参见KnownHeaders),原始格式将被解析,并且相应的“已处理”标头也将被设置。例如:
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"))
还会将已知的标头 LastModifiedHeader 设置为解析日期的 QDateTime 对象。
注意
设置相同的头部两次会覆盖之前的设置。为了实现同名HTTP头部的多重行为,你应该将两个值连接起来,用逗号(“,”)分隔,并设置一个单一的原始头部。
如果代理不是
HttpProxy或HttpCachingProxy类型,则此操作无效。设置此实例的代理类型为
type。请注意,如果已经使用
setCapabilities()设置了任何功能,更改代理的类型不会改变此QNetworkProxy对象所持有的功能集。另请参阅
- setUser(userName)¶
- Parameters:
userName – str
将代理认证的用户名设置为
user。- swap(other)¶
- Parameters:
其他 –
QNetworkProxy
将此网络代理实例与
other交换。此函数非常快速且永远不会失败。返回此实例的代理类型。
另请参阅
- user()¶
- Return type:
字符串
返回用于身份验证的用户名。