javascript - 如何在 Node.js 中根据纬度和经度设置自定义位置?

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

在进行 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());
})();

最佳答案

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

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

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

关于javascript - 如何在 Node.js 中根据纬度和经度设置自定义位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968705/

相关文章:

javascript - 注意用户是否更改为 iframe

node.js - 使用 Node.js 进行 IPv6 多播

javascript - 挑战 : Aggregate Second Element from Input Element

javascript - 单击内部 javascript 链接并使用 puppeteer 返回 url

javascript - 如何在不触发最后一个的情况下调用更多 href 的 onclick - 嵌入式 javascript 模板

javascript - 代码适用于 Firefox,但不适用于 Chrome、Safari

javascript - 递归地从对象(包括父对象)中删除未定义的

javascript - 如何在 Node js 中使用 forEachLimit

javascript - Puppeteer:有没有办法访问 DevTools Network API?

puppeteer - session 和并发以及它们之间的关系