代理
本文档介绍了 JxBrowser 中代理功能的工作原理。您可以在这里找到如何配置代理设置,以及处理代理身份验证请求的方法。
默认情况下,JxBrowser 使用系统代理设置。
系统代理
Windows
JxBrowser 使用与 Microsoft Edge 相同的设置。
macOS
JxBrowser 使用网络控制面板下列出的代理设置。这些设置与 Safari 使用的设置相同。
Linux
JxBrowser 使用 GNOME/KDE 代理设置,或使用某些环境变量。当您修改 JxBrowser 代理设置时,您不会修改系统全局代理设置。
配置
如果您不想使用系统代理设置,您可以为每个 Profile
配置自己的代理设置。
要配置代理设置,请使用 Proxy
:
Proxy proxy = profile.proxy();
val proxy = profile.proxy()
如果您使用 Engine.proxy()
方法,您将获得与默认 Profile 关联的 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())
自动代理检测是系统识别 Web 代理服务器的过程。此功能也称为 Web Proxy Auto-Discovery (WPAD)(网络代理自动发现协议)。启用自动代理检测时,系统会尝试定位返回代理设置的代理配置脚本(wpad.dat
或 proxy.pac
)。如果找到代理配置脚本,系统会下载、编译并在本地计算机上运行该脚本。
自定义
使用此代理配置,您可以为 HTTP、HTTPS 和 FTP 协议提供自定义代理设置:
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
、::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
。在 Web 服务器上,pac 文件必须以 application/x-ns-proxy-autoconfig
MIME 类型提供。
身份验证
JxBrowser 支持代理身份验证。请参阅身份验证。
Chromium 不支持 SOCKS 代理的基于密码的身份验证。