PySide6.QtNetwork.QNetworkProxyFactory

class QNetworkProxyFactory

QNetworkProxyFactory 类提供了细粒度的代理选择。更多

概要

方法

虚拟方法

静态函数

注意

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

详细描述

QNetworkProxyFactoryQNetworkProxy 的扩展,允许应用程序根据请求代理的套接字更精细地控制使用哪些代理服务器。这使得应用程序可以根据协议或目标主机名应用不同的设置。

QNetworkProxyFactory 可以为应用程序全局设置,在这种情况下,它将覆盖使用 setApplicationProxy() 设置的任何全局代理。如果全局设置,使用 Qt 创建的任何套接字将查询工厂以确定要使用的代理。

在某些支持多个连接的框架中,也可以设置一个工厂,例如QNetworkAccessManager。当在此类对象上设置时,工厂将仅查询由该框架创建的套接字。

系统代理

你可以配置一个工厂来使用系统代理的设置。调用setUseSystemConfiguration()函数并传入true来启用此行为,或传入false来禁用它。

同样,您可以通过调用其systemProxyForQuery()函数,使用工厂直接向系统代理进行查询。

警告

根据用户系统的配置,某些平台上使用系统代理功能可能会受到限制。systemProxyForQuery()文档包含了受影响平台的这些限制列表。

__init__()

创建一个QNetworkProxyFactory对象。

由于 QNetworkProxyFactory 是一个抽象类,你不能直接创建 QNetworkProxyFactory 类型的对象。

static proxyForQuery(query)
Parameters:

查询QNetworkProxyQuery

Return type:

QNetworkProxy的列表

此函数接收查询请求 query,检查套接字或请求类型的详细信息,并返回一个按优先级顺序指示要使用的代理服务器的 QNetworkProxy 对象列表。

abstract queryProxy([query=QNetworkProxyQuery()])
Parameters:

查询QNetworkProxyQuery

Return type:

QNetworkProxy的列表

此函数接收查询请求 query,检查套接字或请求类型的详细信息,并返回一个按优先级顺序指示要使用的代理服务器的 QNetworkProxy 对象列表。

在重新实现这个类时,注意至少要返回一个元素。

如果您无法确定更好的代理替代方案,请使用DefaultProxy,它会告诉查询代理的代码使用更高级的替代方案。例如,如果此工厂设置为QNetworkAccessManager对象,DefaultProxy将告诉它查询应用程序级别的代理设置。

如果将此工厂设置为应用程序代理工厂,DefaultProxy 和 NoProxy 将具有相同的含义。

static setApplicationProxyFactory(factory)
Parameters:

factoryQNetworkProxyFactory

设置应用程序范围的代理工厂为factory。此函数将拥有该对象的所有权,并在必要时删除它。

当所有其他代理选择请求返回DefaultProxy时,应用程序范围的代理将作为最后的手段使用。例如,QTcpSocket对象可以使用QTcpSocket::setProxy设置代理,但如果未设置任何代理,则将查询使用此函数设置的代理工厂类。

如果你用这个函数设置了一个代理工厂,任何用setApplicationProxy设置的应用程序级代理将被覆盖,并且usesSystemConfiguration()将返回false

static setUseSystemConfiguration(enable)
Parameters:

enable – 布尔值

启用平台特定的代理设置,并且仅使用这些设置。有关更多信息,请参见systemProxyForQuery()

调用此函数时,将enable设置为true会重置任何已设置的代理或QNetworkProxyFactory

注意

请参阅systemProxyForQuery()文档,了解与使用系统代理相关的限制列表。

static systemProxyForQuery([query=QNetworkProxyQuery()])
Parameters:

查询QNetworkProxyQuery

Return type:

QNetworkProxy的列表

此函数接收查询请求 query,检查套接字或请求类型的详细信息,并返回一个按优先级顺序指示要使用的代理服务器的 QNetworkProxy 对象列表。

此函数可用于确定平台特定的代理设置。如果存在此类库,此函数将使用操作系统提供的库来确定给定连接的代理。如果不存在,此函数将返回一个类型为NoProxyQNetworkProxy

在Windows上,此函数将使用WinHTTP DLL函数。尽管其名称如此,微软建议所有需要网络连接的应用程序都使用它,而不仅仅是HTTP。这将尊重使用proxycfg.exe工具在注册表中设置的代理设置。如果未找到这些设置,此函数将尝试获取Internet Explorer的设置并使用它们。

在macOS上,此函数将使用Apple的CFNetwork框架获取代理设置。它将为包含协议标签“ftp”、“http”和“https”的查询分别应用FTP、HTTP和HTTPS代理配置。如果在该配置中启用了SOCKS代理,此函数将使用SOCKS服务器进行所有查询。如果未启用SOCKS,它将使用HTTPS代理进行所有TcpSocket和UrlRequest查询。

在配置了libproxy支持的系统上,此函数将依赖libproxy来获取代理设置。根据libproxy的配置,这可能会进一步委托给桌面设置、环境变量等。

在其他系统上,此函数将从“http_proxy”环境变量中获取代理设置。此变量必须使用以下方案之一的URL:“http”、“socks5”或“socks5h”。

限制

这些是当前版本此函数的限制。未来版本的Qt可能会解除此处列出的一些限制。

  • 在Windows平台上,根据用户系统的配置,此函数可能需要几秒钟才能执行。

static usesSystemConfiguration()
Return type:

布尔

返回是否启用了平台特定的代理设置。