> 參考文章:
[browsermob-proxy](https://github.com/lightbody/browsermob-proxy#new-browsermobproxy-api)
[lightbody](http://bmp.lightbody.net/)
[selenium](http://wenku.baidu.com/link?url=WbKRY4nmP8VQUkwn8sKRYm97yfFab2aOlkgPFzOKo6-XvDfum3uwPXqpcXzqPHsPq2tPvwbTdvuYAfRpakrhRmRqmVL4pa8dW8bEnoHmouS)
## browsermob-proxy是什么
提供命令行的方式或者嵌入到Java項目中通過api方式生成HAR文件的插件,屬于selenium的一個子項目。具體的流程有點類似與Flidder或Charles。原理開啟一個端口監控某個端口下的所有HTTP請求,進行數據抓取。
## Java API
### 依賴
~~~
compile 'net.lightbody.bmp:browsermob-core-littleproxy:2.1.0-beta-4'
compile 'org.seleniumhq.selenium:selenium-java:2.49.0'
~~~
### 代碼
~~~
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start();
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
WebDriver driver = new FirefoxDriver(capabilities);
proxy.newHar("http://www.baidu.com");
driver.get("http://www.baidu.com");
Har har = proxy.getHar();
har.writeTo(new File("baidu.com.har"));
driver.close();
~~~

運行過程如下:

## 命令行

下載release版本后,解壓,進入該目錄bin目錄下,執行命令`sh browsermob-proxy`輸出如下信息:
~~~
58deMacBook-Pro-7:bin wuxian$ sh browsermob-proxy
Running BrowserMob Proxy using LittleProxy implementation. To revert to the legacy implementation, run the proxy with the command-line option '--use-littleproxy false'.
[INFO 2016-01-14T19:23:50,254 net.lightbody.bmp.proxy.Main] (main) Starting BrowserMob Proxy version 2.1.0-beta-4
[INFO 2016-01-14T19:23:51,510 org.eclipse.jetty.util.log] (main) jetty-7.x.y-SNAPSHOT
[INFO 2016-01-14T19:23:51,546 org.eclipse.jetty.util.log] (main) started o.e.j.s.ServletContextHandler{/,null}
[INFO 2016-01-14T19:23:52,463 org.eclipse.jetty.util.log] (main) Started SelectChannelConnector@auto.58corp.com:8080
~~~