让前端飞Web前端之路

Puppeteer 系列踩坑日志—2—去掉自动化提示

2020-03-19  本文已影响0人  前端大白96

在使用puppeteer自动化的过程中,经常出现一个自动化提示:正在被自动化测试。而这个提示不仅仅有这个作用,它还能让很多网站识别出来,你是在使用爬虫访问,从而采取了相应的反制措施,怎么反制,你懂得。今天我们就来探讨下这个问题!

基础:chrome启动参数的理解
image-20200318111030912.png
解决方案1:修改puppeteer npm包源码(不推荐)
image-20200318112851445.png image-20200318113507991.png

打开puppeteer.js,继续看下去,第一行 const Launcher = require('./Launcher'); 就引起了我们的怀疑,因为下面的代码里面 都有options跟它息息相关,本着不放过一个的精神,我们打开查看,粗略的浏览了一下,貌似没有什么问题?可是别急,继续往下看,我们发现了一堆有意思的东西:

 defaultArgs(options = {}) {
    const chromeArguments = [
      '--disable-background-networking',
      '--enable-features=NetworkService,NetworkServiceInProcess',
      '--disable-background-timer-throttling',
      '--disable-backgrounding-occluded-windows',
      '--disable-breakpad',
      '--disable-client-side-phishing-detection',
      '--disable-component-extensions-with-background-pages',
      '--disable-default-apps',
      '--disable-dev-shm-usage',
      '--disable-extensions',
      '--disable-features=TranslateUI',
      '--disable-hang-monitor',
      '--disable-ipc-flooding-protection',
      '--disable-popup-blocking',
      '--disable-prompt-on-repost',
      '--disable-renderer-backgrounding',
      '--disable-sync',
      '--force-color-profile=srgb',
      '--metrics-recording-only',
      '--no-first-run',
      '--enable-automation',
      '--password-store=basic',
      '--use-mock-keychain',
    ];
    const {
      devtools = false,
      headless = !devtools,
      args = [],
      userDataDir = null
    } = options;
    if (userDataDir)
      chromeArguments.push(`--user-data-dir=${userDataDir}`);
    if (devtools)
      chromeArguments.push('--auto-open-devtools-for-tabs');
    if (headless) {
      chromeArguments.push(
          '--headless',
          '--hide-scrollbars',
          '--mute-audio'
      );
    }
    if (args.every(arg => arg.startsWith('-')))
      chromeArguments.push('about:blank');
    chromeArguments.push(...args);
    return chromeArguments;
  }

惊不惊喜,意不意外?看到名字就知道了:defaultArgs,也就是在你启动puppeteer的时候,不论如何,它都会给你来一个这样的参数列表追加进去,因此我们在使用puppeteer的时候,试着这里的:--enable-automation 删除,再重新跑一遍puppeteer,那个烦人的提示就不见了。(这个时候再试试去登陆那些反爬虫网站,so easy!)

解决方案2:官方方案(推荐)
上一篇 下一篇

猜你喜欢

热点阅读