Skip to content

Latest commit

 

History

History
59 lines (40 loc) · 1.99 KB

puppeteer-示例.md

File metadata and controls

59 lines (40 loc) · 1.99 KB

puppeteer示例:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {

  //这里并未进行深度封装,所以您需要自己写获取未被占用端口的逻辑
  //这里的9992仅仅是示例,您可以给任意端口号,只要是未被占用即可
  free_port='9993'
  
  // 示例指纹串数组
  const fingerprints = [
    "--luna_webrtc_public_ip=101.29.120.5",
    "--luna_audio_random_int_number=981",
    "--luna_platform=win64"
  ];

  // 去掉每个字符串开头的 '--'
  const fingerprintArray = fingerprints.map(str => str.replace(/^--/, ''));

  // 写入文件的路径和文件名,请注意这里的c:\\luna-temp\\ 这个是必须要这个路径,其他路径不生效或者引发未知问题
  const filePath = 'c:\\luna-temp\\'+free_port;

  // 将指纹数组写入文件
  fs.writeFile(filePath, fingerprintArray.join('\n'), (err) => {
    if (err) {
      console.error('Error writing file:', err);
    } else {
      console.log(`File ${filePath} has been written successfully.`);
    }
  });

  //如果你是多线程用户,你应该指定自己的
  //如果你是多线程情况使用,请自己写好--user-data-dir=  也就是你要区分自己的用户缓存路径,否则你的指纹会造成混乱。或者程序崩溃等未知问题。
  //也就是说不同的线程,不同的实例,要采用不同的缓存目录,而不是同一个。
  const browser = await puppeteer.launch({
    //luna 浏览器的路径-这里一定要是luna浏览器的路径,而不是其他浏览器,否则你的指纹无效,另外你的指纹如果未经授权,也是无效
    executablePath:'C:\\workspace\\chrome\\chrome\\src\\out\\Default\\chrome.exe',
    headless:false,
    args: ['--remote-debugging-port='+free_port] // 指定远程调试端口号
  });
  //其他的就是你自己的正常逻辑,你自己参考puppeteer文档即可。
  const page = await browser.newPage();

  await page.goto('https://www.browserscan.net/');

})();