Skip to content

Commit

Permalink
support custom headers
Browse files Browse the repository at this point in the history
  • Loading branch information
Laszlo Karpati committed Jan 16, 2023
1 parent af01c09 commit 01c0c18
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 5 deletions.
13 changes: 11 additions & 2 deletions API/REST/Screenshot.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,21 @@ exports.handler = async (event, context, callback) => {
var resY = 900; if ( event.queryStringParameters.resY != null ) { resY = event.queryStringParameters.resY; }
var outFormat = "jpg"; if ( event.queryStringParameters.outFormat != null ) { outFormat = event.queryStringParameters.outFormat; }
var waitTime = 100; if ( event.queryStringParameters.waitTime != null ) { waitTime = event.queryStringParameters.waitTime; }
var headers = {};

if (event.queryStringParameters.headers != null ) {
try {
headers = JSON.parse(event.queryStringParameters.headers);
} catch (e) {
console.error('can\'t parse headers');
}
}

//var screenshotResult = await tools.screnshotForUrl(url, isFullPage, resX, resY, outFormat);
var screenshotResult = null;

try{
screenshotResult = await tools.screnshotForUrlTab(url, isFullPage, resX, resY, outFormat, waitTime, proxy_server);
screenshotResult = await tools.screnshotForUrlTab(url, headers, isFullPage, resX, resY, outFormat, waitTime, proxy_server);
}
catch(ex){
//do nothing
Expand Down Expand Up @@ -83,4 +92,4 @@ exports.handler = async (event, context, callback) => {
}
});

};
};
1 change: 1 addition & 0 deletions API/WS/Screenshot.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ exports.message = async (event, context, callback) => {
try{
screenshotResult = await tools.screnshotForUrlTab(
url,
obj.headers,
obj.isFullPage,
obj.resX,
obj.resY,
Expand Down
6 changes: 5 additions & 1 deletion API/shared.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const puppeteer = require('puppeteer');

var browser = null;
module.exports.screnshotForUrlTab = async function (url, isfullPage, resX, resY, outFormat, waitTime, proxy_server) {
module.exports.screnshotForUrlTab = async function (url, headers, isfullPage, resX, resY, outFormat, waitTime, proxy_server) {
return new Promise(async function (resolve, reject) {

try{
Expand Down Expand Up @@ -40,6 +40,10 @@ module.exports.screnshotForUrlTab = async function (url, isfullPage, resX, resY,
//const browser = await puppeteer.launch({args: ['--no-sandbox']});
const page = await browser.newPage();
await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36");

if (headers != null) {
page.setExtraHTTPHeaders(headers);
}
await page.goto(url);

await page.setViewport({
Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Add `PROXY_SERVER` env variable:

Make a GET request (or open the url in your browser):

/api/screenshot?resX=1280&resY=900&outFormat=jpg&isFullPage=false&url=https://vms2.terasp.net
/api/screenshot?resX=1280&resY=900&outFormat=jpg&isFullPage=false&url=https://vms2.terasp.net&headers={"foo":"bar"}

## Websocket API

Expand All @@ -102,7 +102,10 @@ var event = {
resX: resX,
resY: resY,
outFormat: outFormat,
isFullPage: isFullPage
isFullPage: isFullPage,
headers: {
foo: 'bar'
}
};
```

Expand All @@ -117,6 +120,7 @@ You can check /public/js/client.js and /public/index.html for a sample on how to
- outFormat: output format, can be jpg, png or pdf, default: jpg
- isFullPage: true or false, indicate if we should scroll the page and make a full page screenshot, default: false
- waitTime: integer value in milliseconds, indicate max time to wait for page resources to load, default: 100
- headers: add extra headers to the request

 
# Protect with an ApiKey
Expand Down

0 comments on commit 01c0c18

Please sign in to comment.