【问题标题】:How do I set custom locations based on latitude and longitude in Node.js?如何在 Node.js 中根据经纬度设置自定义位置?
【发布时间】:2021-06-08 17:36:01
【问题描述】:

在进行 Headless Chrome (Puppeteer) 搜索时,我需要能够根据纬度和经度设置位置:

const puppeteer = require('puppeteer');
var url="https://www.google.com/search?q=";
var keyword="hotels&num=100";
var urls;
var desktopUserAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
const response=[];
var i=0;
var userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";

(async () => 
  const browser = await puppeteer.launch({headless: false });
  const page = await browser.newPage();
  urls=url+keyword;
    /*page.setViewport({
        width: 1000,
        height: 1000
    });*/
page.setUserAgent(userAgent);
  response[i]=await page.goto(urls);
  console.log(await browser.version());
})();

【问题讨论】:

标签: javascript node.js puppeteer google-chrome-headless


【解决方案1】:

您可以创建一个CDPSession 并使用 Chrome DevTools 协议 Page.setGeolocationOverride 覆盖地理位置:

const client = await page.target().createCDPSession();

await client.send('Emulation.setGeolocationOverride', {
  accuracy: 100,
  latitude: 24.42312,
  longitude: 105.75868,
});

【讨论】:

    【解决方案2】:

    page.setGeolocationapi

    文档:https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagesetgeolocationoptions

    代码示例:

      const browser = await puppeteer.launch({headless: false}); // default is true
      const page = await browser.newPage();
      // 116.451673,39.923054
      await page.setGeolocation({latitude: 39.923054, longitude: 130.451673});
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 2015-09-20
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多