When paired with a proxy, Puppeteer can truly be practically unstoppable, especially if we are talking about data extraction. Normally, when using a proxy requiring authentication in a non-headless browser (specifically Chrome), you'll be required to add credentials into a popup dialog. There are 4 ways to do that:
use authenticate() method on the Puppeteer page object
use proxy-chain NPM package
within ProxyConfigurationOptions in the Apify SDK
set the Proxy-Authorization header
You can read a detailed guide on how to use each one of those methods on our blog.