背景:项目主要是做埋点数据,要使用 BrowserMobProxyServer,它相当于做一个代理,在你访问一个网页时,通过代理,获取打开网页的数据,对比你需要对比数据,所以这个工具提供获取页面请求的功能,因为我这里是使用的grid分发,demo如下
public class fg { public static void main(String[] args) { String browser = "chrome"; BrowserMobProxyServer proxy = null; // TODO Auto-generated method stub DesiredCapabilities brwosers = null; try { System.out.println("使用的平台进行启动的浏览器,使用的浏览器为:" + browser); System.setProperty("webdriver.chrome.driver", "resources/chromedriver.exe"); proxy = new BrowserMobProxyServer(); int port = 8750; proxy.start(port); Proxy seleniumProxy = ClientUtil.createSeleniumProxy(new InetSocketAddress("10.32.5.199", port)); //IP地址一定是你运行的ip地址,不然会提示代理设置错误的 brwosers = DesiredCapabilities.chrome(); brwosers.setCapability(CapabilityType.PROXY, seleniumProxy); RemoteWebDriver driver = new RemoteWebDriver(new URL("http://10.40.6.232:4444/wd/hub"), brwosers); driver.manage().window().maximize(); // 设置窗口为最大 // 获取driver的session String getSession = driver.toString().substring(driver.toString().indexOf("(") + 1, driver.toString().indexOf(")")); // get请求,获取在hub上分发到某台电脑运行 Map<String, String> getIP = Pub.get("http://10.40.6.232:4444/grid/api/testsession?session=" + getSession); Gson gson = new Gson();// 从返回内容中获取到需要的内容 Map<String, Object> map = new HashMap<String, Object>(); map = gson.fromJson(getIP.get("Response"), map.getClass()); String proxyId = (String) map.get("proxyId"); System.out.println("服务器运行的ip为:" + proxyId); driver.get("https://login.rosewholesale.com/m-users-a-sign.htm"); Har har = new Har(); proxy.newHar("login.rosewholesale.com/m-users-a-sign.htm"); har = proxy.getHar(); har.writeTo(new java.io.File("C:\a.txt")); proxy.stop(); } catch (Exception e) { e.printStackTrace(); } } }
获取的数据