New version is available
JxBrowser 7 的支持将于 2025 年 10 月终止,届时将不再提供 Chromium 更新和关键修复。 我们建议您升级至 JxBrowser 8,以享受新功能和改进带来的更多优势。 如果您有任何疑问或在升级过程中需要帮助,欢迎随时联系我们
List icon 目录

代理

本文档介绍了 JxBrowser 中代理功能的工作原理。您可以在这里找到如何配置代理设置,以及处理代理身份验证请求的方法。

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

系统代理

Windows

JxBrowser 使用与 Microsoft Edge 相同的设置。

macOS

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

Linux

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

配置

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

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

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

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

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

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

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

直接连接

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

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

自动检测

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

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

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

自定义

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

Java
Kotlin
String proxyRules = "http=foo:80;https=foo:80;ftp=foo:80;socks=foo:80";
String exceptions = "<local>";  // 本地网页绕过代理服务器
proxy.config(CustomProxyConfig.newInstance(proxyRules, exceptions));
val proxyRules = "http=foo:80;https=foo:80;ftp=foo:80;socks=foo:80"
val exceptions = "<local>"  // 本地网页绕过代理服务器
proxy.config(CustomProxyConfig.newInstance(proxyRules, exceptions))

代理规则示例:

  • http=foopy:80;ftp=foopy2 表示对 http:// URL 使用 HTTP 代理 foopy:80,对 ftp:// URL 使用 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::1localhost

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

PAC

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

Java
Kotlin
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。在 Web 服务器上,pac 文件必须以 application/x-ns-proxy-autoconfig MIME 类型提供。

身份验证

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

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