QNetworkProxy

The QNetworkProxy class provides a network layer proxy. More

Inheritance diagram of PySide2.QtNetwork.QNetworkProxy

Synopsis

Functions

Static functions

Detailed Description

QNetworkProxy provides the method for configuring network layer proxy support to the Qt network classes. The currently supported classes are QAbstractSocket , QTcpSocket , QUdpSocket , QTcpServer and QNetworkAccessManager . The proxy support is designed to be as transparent as possible. This means that existing network-enabled applications that you have written should automatically support network proxy using the following code.

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

An alternative to setting an application wide proxy is to specify the proxy for individual sockets using setProxy() and setProxy() . In this way, it is possible to disable the use of a proxy for specific sockets using the following code:

serverSocket.setProxy(QNetworkProxy.NoProxy)

Network proxy is not used if the address used in connectToHost() , bind() or listen() is equivalent to LocalHost or LocalHostIPv6 .

Each type of proxy support has certain restrictions associated with it. You should read the ProxyType documentation carefully before selecting a proxy type to use.

Note

Changes made to currently connected sockets do not take effect. If you need to change a connected socket, you should reconnect it.

SOCKS5

The SOCKS5 support since Qt 4 is based on RFC 1928 and RFC 1929 . The supported authentication methods are no authentication and username/password authentication. Both IPv4 and IPv6 are supported. Domain names are resolved through the SOCKS5 server if the HostNameLookupCapability is enabled, otherwise they are resolved locally and the IP address is sent to the server. There are several things to remember when using SOCKS5 with QUdpSocket and QTcpServer :

With QUdpSocket , a call to bind() may fail with a timeout error. If a port number other than 0 is passed to bind() , it is not guaranteed that it is the specified port that will be used. Use localPort() and localAddress() to get the actual address and port number in use. Because proxied UDP goes through two UDP connections, it is more likely that packets will be dropped.

With QTcpServer a call to listen() may fail with a timeout error. If a port number other than 0 is passed to listen() , then it is not guaranteed that it is the specified port that will be used. Use serverPort() and serverAddress() to get the actual address and port used to listen for connections. SOCKS5 only supports one accepted connection per call to listen() , and each call is likely to result in a different serverPort() being used.

class QNetworkProxy

QNetworkProxy(type[, hostName=””[, port=0[, user=””[, password=””]]]])

QNetworkProxy(other)

param type

ProxyType

param hostName

unicode

param password

unicode

param port

quint16

param other

QNetworkProxy

param user

unicode

Constructs a QNetworkProxy with DefaultProxy type; the proxy type is determined by applicationProxy() , which defaults to NoProxy .

Constructs a QNetworkProxy with type , hostName , port , user and password .

The default capabilities for proxy type type are set automatically.

See also

capabilities()

Constructs a copy of other .

PySide2.QtNetwork.QNetworkProxy.ProxyType

This enum describes the types of network proxying provided in Qt.

There are two types of proxies that Qt understands: transparent proxies and caching proxies. The first group consists of proxies that can handle any arbitrary data transfer, while the second can only handle specific requests. The caching proxies only make sense for the specific classes where they can be used.

Constant

Description

QNetworkProxy.NoProxy

No proxying is used

QNetworkProxy.DefaultProxy

Proxy is determined based on the application proxy set using setApplicationProxy()

QNetworkProxy.Socks5Proxy

Socks5 proxying is used

QNetworkProxy.HttpProxy

HTTP transparent proxying is used

QNetworkProxy.HttpCachingProxy

Proxying for HTTP requests only

QNetworkProxy.FtpCachingProxy

Proxying for FTP requests only

The table below lists different proxy types and their capabilities. Since each proxy type has different capabilities, it is important to understand them before choosing a proxy type.

Proxy type

Description

Default capabilities

SOCKS 5

Generic proxy for any kind of connection. Supports TCP, UDP, binding to a port (incoming connections) and authentication.

TunnelingCapability , ListeningCapability , UdpTunnelingCapability , HostNameLookupCapability

HTTP

Implemented using the “CONNECT” command, supports only outgoing TCP connections; supports authentication.

TunnelingCapability , CachingCapability , HostNameLookupCapability

Caching-only HTTP

Implemented using normal HTTP commands, it is useful only in the context of HTTP requests (see QNetworkAccessManager )

CachingCapability , HostNameLookupCapability

Caching FTP

Implemented using an FTP proxy, it is useful only in the context of FTP requests (see QNetworkAccessManager )

CachingCapability , HostNameLookupCapability

Also note that you shouldn’t set the application default proxy ( setApplicationProxy() ) to a proxy that doesn’t have the TunnelingCapability capability. If you do, QTcpSocket will not know how to open connections.

PySide2.QtNetwork.QNetworkProxy.Capability

These flags indicate the capabilities that a given proxy server supports.

QNetworkProxy sets different capabilities by default when the object is created (see ProxyType for a list of the defaults). However, it is possible to change the capabitilies after the object has been created with setCapabilities() .

The capabilities that QNetworkProxy supports are:

Constant

Description

QNetworkProxy.TunnelingCapability

Ability to open transparent, tunneled TCP connections to a remote host. The proxy server relays the transmission verbatim from one side to the other and does no caching.

QNetworkProxy.ListeningCapability

Ability to create a listening socket and wait for an incoming TCP connection from a remote host.

QNetworkProxy.UdpTunnelingCapability

Ability to relay UDP datagrams via the proxy server to and from a remote host.

QNetworkProxy.CachingCapability

Ability to cache the contents of the transfer. This capability is specific to each protocol and proxy type. For example, HTTP proxies can cache the contents of web data transferred with “GET” commands.

QNetworkProxy.HostNameLookupCapability

Ability to connect to perform the lookup on a remote host name and connect to it, as opposed to requiring the application to perform the name lookup and request connection to IP addresses only.

QNetworkProxy.SctpTunnelingCapability

Ability to open transparent, tunneled SCTP connections to a remote host.

QNetworkProxy.SctpListeningCapability

Ability to create a listening socket and wait for an incoming SCTP connection from a remote host.

static PySide2.QtNetwork.QNetworkProxy.applicationProxy()
Return type

QNetworkProxy

Returns the application level network proxying.

If a QAbstractSocket or QTcpSocket has the DefaultProxy type, then the QNetworkProxy returned by this function is used.

PySide2.QtNetwork.QNetworkProxy.capabilities()
Return type

Capabilities

Returns the capabilities of this proxy server.

PySide2.QtNetwork.QNetworkProxy.hasRawHeader(headerName)
Parameters

headerNameQByteArray

Return type

bool

Returns true if the raw header headerName is in use for this proxy. Returns false if the proxy is not of type HttpProxy or HttpCachingProxy .

PySide2.QtNetwork.QNetworkProxy.header(header)
Parameters

headerKnownHeaders

Return type

object

Returns the value of the known network header header if it is in use for this proxy. If it is not present, returns QVariant() (i.e., an invalid variant).

See also

KnownHeaders rawHeader() setHeader()

PySide2.QtNetwork.QNetworkProxy.hostName()
Return type

unicode

Returns the host name of the proxy host.

PySide2.QtNetwork.QNetworkProxy.isCachingProxy()
Return type

bool

Returns true if this proxy supports the CachingCapability capability.

In Qt 4.4, the capability was tied to the proxy type, but since Qt 4.5 it is possible to remove the capability of caching from a proxy by calling setCapabilities() .

PySide2.QtNetwork.QNetworkProxy.isTransparentProxy()
Return type

bool

Returns true if this proxy supports transparent tunneling of TCP connections. This matches the TunnelingCapability capability.

In Qt 4.4, the capability was tied to the proxy type, but since Qt 4.5 it is possible to remove the capability of caching from a proxy by calling setCapabilities() .

PySide2.QtNetwork.QNetworkProxy.__ne__(other)
Parameters

otherQNetworkProxy

Return type

bool

Compares the value of this network proxy to other and returns true if they differ.

PySide2.QtNetwork.QNetworkProxy.__eq__(other)
Parameters

otherQNetworkProxy

Return type

bool

Compares the value of this network proxy to other and returns true if they are equal (same proxy type, server as well as username and password)

PySide2.QtNetwork.QNetworkProxy.password()
Return type

unicode

Returns the password used for authentication.

PySide2.QtNetwork.QNetworkProxy.port()
Return type

quint16

Returns the port of the proxy host.

PySide2.QtNetwork.QNetworkProxy.rawHeader(headerName)
Parameters

headerNameQByteArray

Return type

QByteArray

Returns the raw form of header headerName . If no such header is present or the proxy is not of type HttpProxy or HttpCachingProxy , an empty QByteArray is returned, which may be indistinguishable from a header that is present but has no content (use hasRawHeader() to find out if the header exists or not).

Raw headers can be set with setRawHeader() or with setHeader() .

PySide2.QtNetwork.QNetworkProxy.rawHeaderList()
Return type

Returns a list of all raw headers that are set in this network proxy. The list is in the order that the headers were set.

If the proxy is not of type HttpProxy or HttpCachingProxy an empty QList is returned.

static PySide2.QtNetwork.QNetworkProxy.setApplicationProxy(proxy)
Parameters

proxyQNetworkProxy

Sets the application level network proxying to be networkProxy .

If a QAbstractSocket or QTcpSocket has the DefaultProxy type, then the QNetworkProxy set with this function is used. If you want more flexibility in determining which proxy is used, use the QNetworkProxyFactory class.

Setting a default proxy value with this function will override the application proxy factory set with setApplicationProxyFactory , and disable the use of a system proxy.

PySide2.QtNetwork.QNetworkProxy.setCapabilities(capab)
Parameters

capabCapabilities

Sets the capabilities of this proxy to capabilities .

PySide2.QtNetwork.QNetworkProxy.setHeader(header, value)
Parameters
  • headerKnownHeaders

  • value – object

Sets the value of the known header header to be value , overriding any previously set headers. This operation also sets the equivalent raw HTTP header.

If the proxy is not of type HttpProxy or HttpCachingProxy this has no effect.

See also

KnownHeaders setRawHeader() header()

PySide2.QtNetwork.QNetworkProxy.setHostName(hostName)
Parameters

hostName – unicode

Sets the host name of the proxy host to be hostName .

PySide2.QtNetwork.QNetworkProxy.setPassword(password)
Parameters

password – unicode

Sets the password for proxy authentication to be password .

PySide2.QtNetwork.QNetworkProxy.setPort(port)
Parameters

portquint16

Sets the port of the proxy host to be port .

PySide2.QtNetwork.QNetworkProxy.setRawHeader(headerName, value)
Parameters
  • headerNameQByteArray

  • valueQByteArray

Sets the header headerName to be of value headerValue . If headerName corresponds to a known header (see KnownHeaders ), the raw format will be parsed and the corresponding “cooked” header will be set as well.

For example:

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

will also set the known header LastModifiedHeader to be the QDateTime object of the parsed date.

Note

Setting the same header twice overrides the previous setting. To accomplish the behaviour of multiple HTTP headers of the same name, you should concatenate the two values, separating them with a comma (“,”) and set one single raw header.

If the proxy is not of type HttpProxy or HttpCachingProxy this has no effect.

See also

KnownHeaders setHeader() hasRawHeader() rawHeader()

PySide2.QtNetwork.QNetworkProxy.setType(type)
Parameters

typeProxyType

Sets the proxy type for this instance to be type .

Note that changing the type of a proxy does not change the set of capabilities this QNetworkProxy object holds if any capabilities have been set with setCapabilities() .

PySide2.QtNetwork.QNetworkProxy.setUser(userName)
Parameters

userName – unicode

Sets the user name for proxy authentication to be user .

PySide2.QtNetwork.QNetworkProxy.swap(other)
Parameters

otherQNetworkProxy

Swaps this network proxy instance with other . This function is very fast and never fails.

PySide2.QtNetwork.QNetworkProxy.type()
Return type

ProxyType

Returns the proxy type for this instance.

See also

setType()

PySide2.QtNetwork.QNetworkProxy.user()
Return type

unicode

Returns the user name used for authentication.