PAC是什么?

一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理其或者直接访问。 当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。 浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自发现协议(Web Proxy Autodiscovery Protocol)自动配置的。 更多详细 http://findproxyforurl.com/

大多数企业网络通过JavaScript使用proxy.pac文件动态定义它们的代理。此文件包含一个名为FindProxyForUrl的JavaScript函数。浏览器支持这个很容易,他们通过DHCP或DNS服务器(使用WPAD文件机制)找出proxy.pac文件的位置。然后,他们使用其内置的JavaScript解析proxy.pac文件,并根据请求的主机,获取正确的代理使用。

java使用获取浏览器代理

Bernd Rosstauscher Google上 proxy-vole库 自2009年以来没有更新了,并且没有可用Maven。有网友在github上(https://github.com/MarkusBernhardt/proxy-vole)开发了个分支版本

获取代理信息

// Use the static factory method getDefaultProxySearch to create a proxy search instance
// configured with the default proxy search strategies for the current environment.
ProxySearch proxySearch = ProxySearch.getDefaultProxySearch();// Invoke the proxy search. This will create a ProxySelector with the detected proxy settings.
ProxySelector proxySelector = proxySearch.getProxySelector();// Install this ProxySelector as default ProxySelector for all connections.
ProxySelector.setDefault(proxySelector);

java动态设置pac文件

https://github.com/carrot-garden/carrot-jnlper/tree/master/carrot-jdk7-jnlp-decompile-deploy 下载并且导入deploy.jar到你的项目中

private static void getProxy(String url) throws ProxyConfigException, MalformedURLException, ProxyUnavailableException {BrowserProxyInfo b = new BrowserProxyInfo();b.setType(ProxyType.AUTO);b.setAutoConfigURL("http://example.com/proxy.pac");SunAutoProxyHandler handler = new SunAutoProxyHandler();handler.init(b);ProxyInfo[] ps = handler.getProxyInfo(new URL(url));for(ProxyInfo p : ps){System.out.println(p.toString());}
}

转载于:https://my.oschina.net/u/998792/blog/869296

java代码使用.pac脚本自动配置代理服务器策略相关推荐

  1. 批处理bat脚本自动配置java的jdk环境变量

    前言 每当更换电脑或者是重装系统之后,都需要重新配置java系统路径.但是又不想每次都去查配置方法,所以写了个脚本自动配置. 脚本内容 @echo off @echo 第一步 输入要设置的JAVA_H ...

  2. Java实战:Robot脚本自动写博客

    Java实战:Robot脚本自动写博客 Java实战:Robot脚本自动写博客 Robot类 常用API 鼠标: 键盘 屏幕 控制 小技巧 实战代码 先上代码: 用法: 注意: 效果: Java实战: ...

  3. 脚本自动配置ssh互信

    前言 此脚本虽然是python脚本,但是里面调用了太多os.system命令(囧,哥的python太水了),只要懂shell脚本,就可用shell来完成自动配置ssh互信脚本.为何当初没有使用exce ...

  4. Notepad++运行java代码,并设置自动格式化Java代码

    文章目录 Notepad++运行java代码 Notepad++自动格式化Java代码 Notepad++运行java代码 1.下载插件 2.在弹出的显示插件的窗口中勾上NppExec这个插件,再点i ...

  5. hive运行mysql脚本_用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql

    1:创建shell脚本 1 touch sqoop_options.sh2 chmod 777 sqoop_options.sh 编辑文件  特地将执行map的个数设置为变量  测试 可以java代码 ...

  6. qq邮箱格式的Java代码_java mail qq邮箱配置 实例

    程序入口: Test_Email_N.java importjava.io.IOException;importjava.util.Date;importjava.util.Properties;im ...

  7. eclipse 修改java代码不重启服务器 生效配置

       1.本文目的:用tomcat进行web开发时,修改Java代码往往要重启代码,当工程较大启动较慢时,严重影响效率,本文通过eclipse下tomcat开发和发布web程序时,对一些Java代码一 ...

  8. java服务 重启_Shell脚本自动重启Java服务

    话不多说直接上代码: cd /home/javaProduct/ if [ -d '/home/javaProduct/lib_new/' ]; then echo 'Has New Lib!' ec ...

  9. java 代码 设置环境变量_Java 配置环境变量教程

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 1.安装JDK开发环境 开始安装JDK: 修改安装目录如下: 确定之后,单击"下一步". 注:当提示安装JRE时,可以选择 ...

最新文章

  1. 记录一下水下相机标定
  2. 区块链学堂(1):区块链引子
  3. c语言分配内存空间方法,C语言之动态分配内存空间
  4. Docker在Ubuntu16.04上安装
  5. java数组的扩容,将两个数组合并成一个数组
  6. linux操作常用命令
  7. 【Kafka】UnsupportedVersionException: The broker does not support DESCRIBE_LOG_DIRS
  8. 一阶电路误差分析_电动涡旋压缩机转子的模态分析及试验研究
  9. centos mysql php tomcat_CentOS 6.x使用yum快速安装Apache+PHP+Tomcat(JSP)+MySQL
  10. 微信公众平台2013.08.05更新说明
  11. 前序与中序遍历序列构造二叉树 中序与后序遍历序列构造二叉树
  12. 斗鱼TV Web API
  13. 概率计算机在线,在线抽奖大转盘和概率计算
  14. 计算机组成原理分部实验,《计算机组成原理》课程建设的一点思考参考.pdf
  15. idea开发常用基本且非常实用的配置
  16. apple pencil值不值得购买?ipad平替电容笔安利
  17. SQL SERVER 简单介绍
  18. Java-对象头详解
  19. 海信信号机后台服务器配置,海信6101信号机功能.docx
  20. 计算机专业领域和英语,专业、领域和职业的英语表达法

热门文章

  1. 鸡生蛋,蛋生鸡问题。JS顶级对象Function,Object关系
  2. mysql时间转成毫秒_mysql时间字段转换为毫秒格式
  3. 中国工业经济论文合集-含全部数据代码(2015-2021年)
  4. npm更新命令更新最新版本
  5. 游戏陪玩系统源码中聊天室内礼物系统的实现
  6. 关于轮播图的简单介绍
  7. 【Wwise】PrepareEventPrepareBank系列接口研究
  8. idea debug模式提示 Method breakpoints may dramatically slow down debugging
  9. 计算机毕业设计django基于python平面地图监控系统
  10. 006我们身边的仓储物流自动化技术之2