New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(plugin-user-data-dir): Use onDisconnect instead of onClose #530
Conversation
this cause by browser.close() event missing "onDisconnected" event will make application freeze And can't use "onClose" because it's make freeze too * **Deprecated:** Since puppeteer v1.6.0 `onDisconnected` has been improved * and should be used instead of `onClose`. * * In puppeteer < v1.6.0 `onDisconnected` was not catching all exit scenarios. also relate problem has mention it' pluginStealth.enabledEvasions.delete('user-agent-override'); I test fixed by this code ``` const express = require('express'); // Adding Express const crypto = require('crypto'); const app = express(); // Initializing Express var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: false })); const puppeteer = require('puppeteer-extra'); // Adding Puppeteer const pluginStealth = require('puppeteer-extra-plugin-stealth')(); puppeteer.use(pluginStealth); const app_dir = __dirname; const PORT_USAGE = '8017'; var url_target = "https://google.com"; var gname = "test_session"; app.get('/', function(req, res) { ;(async () => { // Launch the browser in headless mode and set up a page. puppeteer.launch( { args: ['--no-sandbox', '--disable-setuid-sandbox'], ignoreHTTPSErrors: true, /*executablePath: '/usr/bin/chromium-browser',*/ dumpio: false, headless: true, userDataDir: app_dir + "/cookies_" + gname + ".cookie", } ).then(async function(browser) { const page = await browser.newPage(); await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"); await page.goto(url_target,{ waitUntil: "networkidle2", timeout: 10 * 1000 }); await page.setRequestInterception(true); await browser.close(); res.json({ status:process.pid }) return res.end(); }); })() }); app.listen(8017, '127.0.0.1', function() { console.log(new Date().toString(),'Running on port ' + PORT_USAGE); }); ``` It can close application without force killing Update index.js 3252d5c maybe not need onDisconnected event handle in this file
@dev-hyperweb can you look at the failing tests? Edit: seems like it was a fluke, this PR LGTM now |
Any updates? |
maybe this solution need test with other plugins to makesure it's not conflic but I don't have time to test. |
got solves with this solution maybe closed this PR |
Apparently it's not solved with the fix in this comment, changing to puppeteer-extra/packages/puppeteer-extra-plugin/src/index.ts Lines 503 to 520 in 0049d60
|
I don't know why fail test maybe cause by evasion ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We confirmed in testing this seems to fix the windows bug, the failing test seems like a fluke to me
thanks @dev-hyperweb 👍 |
puppeteer-extra-plugin-stealth
puppeteer-extra-plugin : user-agent-override
missing "onDisconnected" event will make application freeze
( Stuct in onClose event )
And can't use "onClose" because it's make freeze too
onDisconnected
has been improvedonClose
.onDisconnected
was not catching all exit scenarios.also relate problem has mention it on other relate problem too
pluginStealth.enabledEvasions.delete('user-agent-override');
this short fix, but we need "user-agent-override" to work better than disable
I test fixed by this code
and request http to "127.0.0.1:8017"
It can close application without force killing