0

想象一下跟踪这样的页面?(用 Chrome 打开,然后右键单击并选择翻译成英文。)

http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042

当您按 F12 并选择 Network 选项卡时,请注意正在返回响应(以大约每秒 1 次的间隔),其中包含最后的价格和交易,以及以下 HTTP 标头详细信息:

{
   ...
   connection: keep-alive
   cookies: fooCookie
   ...
}

我已经尝试过GOT使用 keep-alive 配置的软件包:

const gotOption = {
  keepAlive: true,
  maxSockets: 10,
}

await got.get(url, {
        agent: {
          http: new HttpAgent(gotOption),
          https: new HttpsAgent(gotOption),
        },
})

我只得到第一个响应,但我怎样才能得到新的响应?是否可以为此目的使用 Puppeteer?

4

1 回答 1

0

好吧,xhr每 3 到 5 秒就会发出一个新请求。

您可以运行触发该特定事件的函数。拦截.aspx响应并运行您的脚本。这是一个最小的片段。

let puppeteer = require(`puppeteer`);
(async () => {
    let browser = await puppeteer.launch({
        headless: true,
    });
    let page = await browser.newPage(); (await browser.pages())[0].close();
    let res = 0;
    page.on('response', async (response) => {    
        if (response.url().includes(`.aspx`)) {
            res++;
            console.log(`\u001b[1;36m` + `Response ${res}: ${new Date(Date.now())}` + `\u001b[0m`);
        };
    }); 
    await page.goto('http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042');
    //await browser.close();
})();
于 2021-12-27T02:24:03.617 回答