Skip to content

Commit 9f8e7f2

Browse files
committed
Added custom headers support
1 parent 9fa1e80 commit 9f8e7f2

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,20 @@ client.scrape('https://httpbin.org/cookies', { cookies: 'cookieName1=cookieVal1;
138138
.catch(err => console.error(err.message));
139139
```
140140

141+
### Adding custom headers
142+
143+
```js
144+
const ScrapingAntClient = require('@scrapingant/scrapingant-client');
145+
146+
const client = new ScrapingAntClient({ apiKey: '<YOUR-SCRAPINGANT-API-KEY>' });
147+
148+
// Scrape the httpbin.org site and get all the headers that would be sent before
149+
client.scrape('https://httpbin.org/headers', { headers: { scraping: "is cool!" } })
150+
.then(res => console.log(res))
151+
.catch(err => console.error(err.message));
152+
```
153+
154+
141155
### Executing custom JS snippet
142156

143157
```js

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@scrapingant/scrapingant-client",
3-
"version": "0.1.0",
3+
"version": "0.2.0",
44
"description": "ScrapingAnt API client for JavaScript",
55
"main": "src/index.js",
66
"keywords": [

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class ScrapingAntClient {
4848
* @param {object} [parameters]
4949
* @param {boolean} [parameters.browser]
5050
* @param {string} [parameters.cookies]
51+
* @param {object} [parameters.headers]
5152
* @param {string} [parameters.js_snippet]
5253
* @param {string} [parameters.proxy_type] 'datacenter' or 'residential'
5354
* @param {string} [parameters.proxy_country]

src/scraping_client.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,28 @@ class ScrapingClient {
2222
* @param {object} [parameters]
2323
* @param {boolean} [parameters.browser]
2424
* @param {string} [parameters.cookies]
25+
* @param {object} [parameters.headers]
2526
* @param {string} [parameters.js_snippet]
2627
* @param {string} [parameters.proxy_type] 'datacenter' or 'residential'
2728
* @param {string} [parameters.proxy_country]
2829
* @param {string} [parameters.wait_for_selector]
2930
* @param {boolean} [parameters.return_text]
3031
*/
3132
async call(url, parameters = {}) {
33+
const transformedHeaders = parameters.headers && typeof parameters.headers === 'object'
34+
? this._transformCustomHeaders(parameters.headers)
35+
: {};
36+
37+
const defaultHeaders = {
38+
'Content-Type': 'application/json',
39+
'x-api-key': this.apiKey,
40+
};
41+
42+
const headers = Object.assign(defaultHeaders, transformedHeaders);
3243
const response = await this.httpClient.call({
3344
url: `${constants.baseUrl}/v1/general`,
3445
method: 'post',
35-
headers: {
36-
'Content-Type': 'application/json',
37-
'x-api-key': this.apiKey,
38-
},
46+
headers,
3947
data: {
4048
url,
4149
...(typeof parameters.browser !== 'undefined' && { browser: !!parameters.browser }),
@@ -50,6 +58,16 @@ class ScrapingClient {
5058

5159
return response.data;
5260
}
61+
62+
_transformCustomHeaders(headers = {}) {
63+
const returnHeaders = {};
64+
65+
Object.keys(headers).forEach((key) => {
66+
returnHeaders[`ant-${key}`] = headers[key];
67+
});
68+
69+
return returnHeaders;
70+
}
5371
}
5472

5573
module.exports = ScrapingClient;

0 commit comments

Comments
 (0)