代理

本文档将介绍代理功能如何在 JxBrowser 中工作。 您还可以在此处找到如何配置代理设置和处理代理身份验证请求。

默认情况下,JxBrowser 使用系统代理设置。

系统代理

Windows

JxBrowser 使用与 Microsoft Internet Explorer 相同的设置。

macOS

JxBrowser 使用网络控制面板下列出的代理设置。 这些设置与 Safari 使用的设置相同。

Linux

JxBrowser 使用 GNOME/KDE 代理设置,或者将使用某些环境变量。 当您修改 JxBrowser 代理设置时,您不会修改系统全局代理设置。

配置

如果您不想使用系统代理设置,您可以为每个 Profile 配置自己的代理设置。

要配置代理设置,请使用 Proxy

Proxy proxy = profile.proxy();
val proxy = profile.proxy()

如果您使用 Engine.proxy() 方法,您将获得与默认配置文件关联的 Proxy 实例。

如果您想告诉库再次使用系统代理设置,请调用:

proxy.config(SystemProxyConfig.newInstance());
proxy.config(SystemProxyConfig.newInstance())

代理设置存储在用户数据目录中。 因此,如果您将 Engine 配置为使用特定的用户数据目录,则 Engine 将记住代理设置并在您下次创建它时恢复它们。

直接

使用此代理配置,连接将完全不需要代理服务器:

proxy.config(DirectProxyConfig.newInstance());
proxy.config(DirectProxyConfig.newInstance())

自动检测

使用此代理配置,连接会自动检测代理设置:

proxy.config(AutoDetectProxyConfig.newInstance());
proxy.config(AutoDetectProxyConfig.newInstance())

自动代理检测是系统识别网络代理服务器的过程。 此功能也称为网络代理自动发现协议 (WPAD)。 启用自动代理检测后,系统会尝试查找负责返回代理集的代理配置脚本(wpad.datproxy.pac)。 如果找到代理配置脚本,则在本地计算机上下载、编译并运行该脚本。

自定义

使用此代理配置,您可以为 HTTP、HTTPS 和 FTP 协议提供自定义代理设置:

String proxyRules = "http=foo:80;https=foo:80;ftp=foo:80;socks=foo:80";
String exceptions = "<local>";  // bypass proxy server for local web pages
proxy.config(CustomProxyConfig.newInstance(proxyRules, exceptions));
val proxyRules = "http=foo:80;https=foo:80;ftp=foo:80;socks=foo:80"
val exceptions = "<local>"  // bypass proxy server for local web pages
proxy.config(CustomProxyConfig.newInstance(proxyRules, exceptions))

代理规则示例:

  • http=foopy:80;ftp=foopy2 表示对 http://URL 使用 HTTP 代理 foopy:80 ,对 ftp:// 使用 HTTP 代理 foopy2:80
  • foopy:80 表示对所有 URL 使用 HTTP 代理 foopy:80
  • socks4://foopy 表示对所有 URL 使用 SOCKS v4 代理 foopy:1080

异常的格式可以是以下任何一种:

  • [ URL_SCHEME "://" ] HOSTNAME_PATTERN [ ":" <port> ]

    示例:

      foobar.com
      *foobar.com
      *.foobar.com
      *foobar.com:99
      https://x.*.y.com:99
    
  • "." HOSTNAME_SUFFIX_PATTERN [ ":" PORT ]

    示例:

      .google.com
      .com
      http://.google.com
    
  • [ SCHEME "://" ] IP_LITERAL [ ":" PORT ]

    示例:

      127.0.1
      [0:0::1]
      [::1]
      http://[::1]:99
    
  • IP_LITERAL "/" PREFIX_LENGHT_IN_BITS.

    示例:

      192.168.1.1/16
      fefe:13::abc/33
    
  • "<local>". 匹配本地地址。 <local> 表示主机匹配以下之一:127.0.0.1, ::1, localhost

如果需要提供多个异常规则,可以使用逗号将它们隔开:*foobar.com,.google.com,<local>;

PAC

使用此代理配置,连接使用从代理自动配置 (PAC) 文件接收的代理设置。 您必须提供所需 PAC 文件的有效 URL:

proxy.config(UrlProxyConfig.newInstance("<pac-file-url>"));
proxy.config(UrlProxyConfig.newInstance("<pac-file-url>"))

PAC 文件的 URL 必须是有效的 http:// 地址。 您不能提供存储在本地文件系统上的 *.pac 文件的路径。 PAC 文件的名称必须具有 pac 扩展名。 例如,http://my-site.com/proxy.pac。 在 网络服务器上,pac 文件必须使用 application/x-ns-proxy-autoconfig 类型提供。

身份验证

JxBrowser 支持代理认证。 请参阅身份验证

Chromium 不支持 SOCKS 代理的基于密码的身份验证。

Go Top