Skip to content
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

Working for only first link, not for the links that are opened in new tabs (via website). #23

Open
millionwords opened this issue Feb 24, 2019 · 11 comments
Labels
bug Something isn't working ongoing-research puppeteer-limitation This is a limitation imposed by the original puppeteer

Comments

@millionwords
Copy link

Hello,

I've started using your packages, but it seems to be working on the first request only if there is any link opening in a new tab, the requests are getting bypassed.

Can you help me out with this?

Thank you!

@berstend
Copy link
Owner

Hey @millionwords could you provide a code example of the issues you have?

The following simple test case with multiple pages works as expected:

const puppeteer = require("puppeteer-extra")

const UserAgentPlugin = require("puppeteer-extra-plugin-anonymize-ua")
const uaPlugin = UserAgentPlugin({
  customFn: ua => ua.replace("Chrome", "Beer")
})

puppeteer.use(uaPlugin)

const checkPageForBeer = name => async page => {
  await page.goto("https://httpbin.org/headers", {
    waitUntil: "domcontentloaded"
  })
  const content = await page.content()
  console.log(`- ${name}: User agent includes beer:`, content.includes("Beer"))
}

puppeteer.launch({ headless: true }).then(async browser => {
  const page1 = await browser.newPage()
  await checkPageForBeer("page1")(page1)

  const page2 = await browser.newPage()
  await checkPageForBeer("page2")(page2)

  await browser.close()
})

Output:

❯❯❯ node newtab.js
- page1: User agent includes beer: true
- page2: User agent includes beer: true

Are you by chance dealing with popups? I recall that there where several issues surrounding popup handling in pptr, but it's been a while. 😄

@berstend berstend added the more-info-needed Further information is requested label Feb 25, 2019
@millionwords
Copy link
Author

yes, It's a popup in a new tab, the headers do not work well :(

@gentlyawesome
Copy link

I have the same issue. The first page is okay with all the settings but after clicking a link and opening to a new window. it is not configured as the first page.

@berstend
Copy link
Owner

Back when I did the bulk of the code, popups where a known issue with puppeteer. A lot has happened since then and I'm gonna check if we aren't able to find a workaround here. 😄👍

@berstend berstend added the bug Something isn't working label Feb 28, 2019
@RainUUU
Copy link

RainUUU commented Jul 14, 2019

I also have the same question.
like this

` const page = await browser.newPage();

await page.goto('https://example.com/');
await page.evaluate(() => {
    var a = document.createElement('a');
    a.href = 'https://example.com/?404';
    a.target = '_blank';
    a.innerHTML = 'Click me';
    a.id = 'click';
    document.body.appendChild(a);
});

await page.waitFor(1000);

await page.click('#click');`

the new page is opend by a[target='_blank'],then puppeteer-extra-plugin-stealth does not work.
so is the puppeteer's bug? has other method to hack this problem?

@ghost
Copy link

ghost commented Sep 5, 2019

This is a known limitation of puppeteer puppeteer/puppeteer#3667

@berstend berstend added ongoing-research and removed more-info-needed Further information is requested labels Dec 10, 2019
@berstend
Copy link
Owner

berstend commented Dec 10, 2019

I'm working on a fix for this using new CDP hooks (puppeteer/puppeteer#3667 (comment)).

Right now I got a PoC working which will intercept implicitly created targets but I currently need to reload the popup/page to make it continue loading (which is less than optimal). I'll continue researching this, also happy to discuss potential ways to fix that.

But all in all it should be possible to fix this behaviour in the not too distant future :)

@berstend berstend added the puppeteer-limitation This is a limitation imposed by the original puppeteer label Dec 14, 2019
@JazyCruice
Copy link

Hey @berstend !
You are doing a great job here
It would be great if you can share any progress connected with this issue

@jozsi
Copy link
Contributor

jozsi commented Feb 28, 2020

FYI, this is on the list for Playwright. I'm eager to see how they manage to resolve it.

@arjunattam
Copy link

FYI, this is on the list for Playwright. I'm eager to see how they manage to resolve it.

I'm from the Playwright team. Playwright supports emulation properties at a browser context level, which enables all pages within the context to work with the said properties. These pages can be opened through browserContext.newPage() or as a result of page navigations.

@FdelMazo
Copy link

FdelMazo commented Aug 23, 2023

Hi @arjunattam, reading your comment I didn't fully understand if this works out of the box on playwright or what would the proper set up be to have the plugins work on every tab.

On this minimal example, I'm having trouble getting the anonymize-ua plugin to work on a page navigation, using playwright.

const { chromium } = require('playwright-extra')
const plugin = require('puppeteer-extra-plugin-anonymize-ua')(
    { customFn: (ua) => 'MyCoolAgent/' + ua.replace('Chrome', 'Beer') }
)

chromium.use(plugin)
chromium.launch({ headless: false }).then(async browser => {
    const page = await browser.newPage()
    await page.goto('https://www.whatismybrowser.com/detect/what-is-my-user-agent/', { waitUntil: 'domcontentloaded' })
    await page.click('[href="/detect/what-is-my-user-agent/"]', { button: 'middle' })
    // wait 10 seconds before closing the browser
    // manually switch to the new tab and check that the ua is different between both
    await new Promise((resolve) => setTimeout(resolve, 10000));
    await browser.close()
})

Do you have any idea on what's missing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working ongoing-research puppeteer-limitation This is a limitation imposed by the original puppeteer
Projects
None yet
Development

No branches or pull requests

8 participants