Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/benruns/bmp-client
Browsermob js client
https://github.com/benruns/bmp-client
browsermob-proxy monitoring selenium webdriver
Last synced: 3 months ago
JSON representation
Browsermob js client
- Host: GitHub
- URL: https://github.com/benruns/bmp-client
- Owner: BenRuns
- Created: 2017-03-16T22:02:40.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-09-20T16:41:20.000Z (5 months ago)
- Last Synced: 2024-10-14T19:41:10.301Z (4 months ago)
- Topics: browsermob-proxy, monitoring, selenium, webdriver
- Language: JavaScript
- Size: 77.1 KB
- Stars: 4
- Watchers: 2
- Forks: 5
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BrowserMob Proxy Client
A library built to interact with [browsermob-proxy][1]'s REST Api. Browsermob proxy has not been updated in several years, it is unlikely that this library will see any substantial updates anytime soon
### Setup
1. Ensure that you've downloaded [browsermob-proxy][1] and have it running
2. `npm install browsermob-proxy-client`#### Quick Start With Selenium
```javascript
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
const until = webdriver.until;
const selProxy = require('selenium-webdriver/proxy');
const bmpClient = require('browsermob-proxy-client').createClient();
//need to require this or it looks for a globally installed chromedriver
const chromedriver = require('chromedriver');async function runBmp() {
await bmpClient.start();
await bmpClient.createHar();
const driver = new webdriver.Builder()
.forBrowser('chrome')
.setProxy(selProxy.manual({ http: 'localhost:' + bmpClient.proxy.port }))
.build();await driver.get("https://search.yahoo.com");
const harData = await bmpClient.getHar();
//do something
console.log(harData);
await bmpClient.end();
}runBmp()
.then(function () {
console.log("Finished Successfully");
process.exit([0]);
})
.catch(function (err) {
console.error(err.message);
console.error(err.stack)
process.exit([1]);
});```
#### API
##### BrowserMobClient.createClient(config)
Synchronous function that instantiates a new client
- config{
browserMob:{ // *optional* details on where browsermob is running
host:'localhost',
port: 8080,
protocol:'http'
},
proxy:{ // *optional*
port:8081,
bindAddress: `192.168.1.222`
}
}##### client.callRest(url, method, data)
Method to make direct calls to browsermob-proxy's REST API
see [browsermob-proxy](https://github.com/lightbody/browsermob-proxy#rest-api) for available urls. Returns a promise.- url
String - '/har' (see https://github.com/lightbody/browsermob-proxy#rest-api, for a list of endpoints)
- methodString - 'GET, POST, DELETE, PUT'
- data
Object - { enable: true }
##### client.closeProxies()
Returns a promise that closes all proxies running##### client.createHar(options)
Returns a promise. Creates a har file on browsermob- options
{
captureHeaders: - Boolean, capture headers or not.
Optional, default to "false".captureContent: - Boolean, capture content bodies or not.
Optional, default to "false".captureBinaryContent: Boolean, capture binary content or not.
Optional, default to "false".initialPageRef: - The string name of The first page ref
that should be used in the HAR. Optional,
default to "Page 1".initialPageTitle: - The title of first HAR page. Optional,
default to initialPageRef.
}##### client.end()
Returns a promise that stops the proxy port##### client.getHar()
Returns a promise that resolves to a har in JSON format##### client.listProxies()
Resolves to { proxyList: [ { port: 8081 }, { port: 8082 }, { port: 8083 } ]##### client.setLimits(options)
sets limits on the proxy
- options{
downstreamKbps: - Sets the downstream bandwidth limit in kbps. Optional.upstreamKbps: - Sets the upstream bandwidth limit kbps. Optional, by default unlimited.
downstreamMaxKB: - Specifies how many kilobytes in total the client is allowed to download through the proxy. Optional, by default unlimited.
upstreamMaxKB: - Specifies how many kilobytes in total the client is allowed to upload through the proxy. Optional, by default unlimited.
latency: - Add the given latency to each HTTP request. Optional, by default all requests are invoked without latency.
enable: - A boolean that enable bandwidth limiter. Optional, by default to "false", but setting any of the properties above will implicitly enable throttling
payloadPercentage: - Specifying what percentage of data sent is payload, e.g. use this to take into account overhead due to tcp/ip. Optional.
maxBitsPerSecond: - The max bits per seconds you want this instance of StreamManager to respect. Optional.
}##### client.start(options)
starts a port to use
- options{
port: 'specify a port to start the proxy on',
bindAddress: '192.168.1.222' // if working in a multi-home env
}### Development
### Testing
1. Install dependencies `npm install`2. Install and run [browsermob-proxy][1]
npm run install-browsermob
npm run start-browsermob2. Run the tests
npm test
[1]: https://github.com/lightbody/browsermob-proxy