1
2
mirror of https://github.com/vimagick/dockerfiles synced 2024-06-16 11:58:47 +00:00

update browserless

This commit is contained in:
kev 2023-02-22 18:38:45 +08:00
parent bfb26b8b96
commit 37f07d09af
2 changed files with 71 additions and 31 deletions

@ -8,19 +8,21 @@ to.
## docker-compose.yml ## docker-compose.yml
```yaml ```yaml
browserless: version: '3.8'
image: browserless/chrome:1-chrome-stable services:
ports: browserless:
- "3000:3000" image: browserless/chrome:1-chrome-stable
environment: ports:
- DEBUG=browserless/chrome - "3000:3000"
- MAX_CONCURRENT_SESSIONS=10 environment:
- CONNECTION_TIMEOUT=600000 - DEBUG=browserless/chrome
- MAX_QUEUE_LENGTH=10 - MAX_CONCURRENT_SESSIONS=100
- ENABLE_CORS=true - CONNECTION_TIMEOUT=300000
- CHROME_REFRESH_TIME=3600000 - MAX_QUEUE_LENGTH=100
shm_size: 2gb - ENABLE_CORS=true
restart: always - ENABLE_DEBUG_VIEWER=true
- EXIT_ON_HEALTH_FAILURE=true
restart: unless-stopped
``` ```
## screenshot.js ## screenshot.js
@ -28,30 +30,67 @@ browserless:
```javascript ```javascript
'use strict'; 'use strict';
const puppeteer = require('puppeteer'); const puppeteer = require('puppeteer-core');
(async() => { (async() => {
const browser = await puppeteer.connect({browserWSEndpoint: 'ws://localhost:3000'}); const browser = await puppeteer.connect({browserWSEndpoint: 'ws://localhost:3000'});
const page = await browser.newPage(); const page = await browser.newPage();
await page.setViewport({width: 1280, height: 720});
await page.goto('https://www.google.com/', {waitUntil: 'networkidle2'}); await page.goto('https://www.google.com/', {waitUntil: 'networkidle2'});
await page.waitForSelector('img[alt="Google"]');
await page.screenshot({path: 'google.png', fullPage: true}); await page.screenshot({path: 'google.png', fullPage: true});
await browser.close(); await browser.close();
})(); })();
``` ```
## screenshot.py
```python
#!/usr/bin/env python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument("--window-size=1024,768")
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Remote(
command_executor='http://localhost:3000/webdriver',
options=options
)
driver.get('https://www.google.com/')
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, 'img[alt="Google"]'))
)
driver.save_screenshot('google.png')
driver.close()
driver.quit()
```
## Up and Running ## Up and Running
```bash ```bash
$ docker-compose up -d $ docker-compose up -d
$ PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install puppeteer
$ npm install puppeteer-core
$ node screenshot.js $ node screenshot.js
$ imgcat google.png $ imgcat google.png
$ pip install selenium
$ python screenshot.py
$ imgcat google.png
$ http http://127.0.0.1:3000/screenshot \ $ http http://127.0.0.1:3000/screenshot \
url=https://www.youtube.com \ url=https://www.youtube.com \
options:='{"fullPage":true}' \ options[fullPage]:=true \
gotoOptions:='{"waitUntil":"networkidle2"}' > youtube.png gotoOptions[waitUntil]=networkidle2 > youtube.png
$ imgcat youtube.png $ imgcat youtube.png
``` ```

@ -1,14 +1,15 @@
browserless: version: '3.8'
image: browserless/chrome:1-chrome-stable services:
ports: browserless:
- "3000:3000" image: browserless/chrome:1-chrome-stable
environment: ports:
- DEBUG=browserless/chrome - "3000:3000"
- MAX_CONCURRENT_SESSIONS=10 environment:
- CONNECTION_TIMEOUT=600000 - DEBUG=browserless/chrome
- MAX_QUEUE_LENGTH=10 - MAX_CONCURRENT_SESSIONS=100
- CHROME_REFRESH_TIME=3600000 - CONNECTION_TIMEOUT=300000
- ENABLE_CORS=true - MAX_QUEUE_LENGTH=100
- EXIT_ON_HEALTH_FAILURE=true - ENABLE_CORS=true
shm_size: 2gb - ENABLE_DEBUG_VIEWER=true
restart: always - EXIT_ON_HEALTH_FAILURE=true
restart: unless-stopped