木偶演员缺少反应,行为与皮佩提尔不同

2024-09-30 12:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个简单的程序,只记录请求和响应,一次是Python中的Pypetteer,一次是JavaScript中的Puppeter。 以下是JS代码:

const puppeteer = require('puppeteer');
const url = 'https://www.twitch.tv/';
(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.setRequestInterception(true);

    page.on('request', request => {
        console.log("REQUEST: " + request.url());
        request.continue();
    });

    page.on('response', response => {
        console.log("RESPONSE: " + response.url());
    });

    await page.goto(url, {waitUntil: ["networkidle0", "domcontentloaded"]});
    await browser.close();
})();

下面是Python代码:

import asyncio
from pyppeteer import launch

url = "https://www.twitch.tv/"

async def handle_request(request):
    print("REQUEST: ", request.url)
    await request.continue_()

async def handle_response(response):
    print("RESPONSE: ", response.url)

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.setRequestInterception(True)

    page.on('response', handle_response)
    page.on('request', handle_request)

    await page.goto(url, waitUntil=["networkidle0", "domcontentloaded"])
    await browser.close()

asyncio.get_event_loop().run_until_complete(main()) 

然后,我使用以下方法比较它们的输出:

> python3 script.py | grep "wasm"
REQUEST:  https://static.twitchcdn.net/assets/wasmworker.min-[redacted].js
REQUEST:  https://static.twitchcdn.net/assets/wasmworker.min-[redacted].wasm
> node script.js | grep "wasm"
(nothing)

我的问题是:

(1)为什么我会得到不同的结果?木偶演员和Pypetteer不应该在背景中使用完全相同的浏览器,并且(希望)使用相同的默认设置(例如视口…等等)?
(2) 尽管Python版本工作得更好(对于我的用例来说,主观上更好),但在记录请求时,为什么不记录相应的响应呢?当在非headless模式下运行时,在开发者控制台中,两个请求都会显示响应代码200。是什么导致Pypetteer不记录响应

我尝试使用不同的视口大小并启用/禁用缓存,但没有效果

编辑:好的,(1)的原因似乎是Pypetteer已经过时了。关于(2):twitch.tv不提供我在与Puppeter一起运行时搜索的文件(流也不工作);尽管我将Puppeter设置为使用与手动访问页面时相同的chrome可执行文件和UserAgent字符串,但它仍然可以工作。我认为这可能与Puppeter禁用扩展有关,因为调试控制台显示了来自chrome cast扩展的cast_sender.js的一些错误,但甚至在Puppeter加载感兴趣的文件时使用确切的saame参数启动chrome


Tags: httpsbrowserurlasynconresponserequest记录

热门问题