Puppeteer 连接 chrome 浏览器远程调试链接(localhost:9222)时出现 404 错误,如何解决?

问题描述 投票:0回答:1

我正在使用以下代码在现有浏览器窗口上使用 puppeteer:

    const browser = await puppeteer.connect({
      browserWSEndpoint: 'ws://localhost:9222'
    });

我已经启动了一个 Chrome 窗口,并使用此命令进行调试:

"C:\Program Files\Google\Chrome\Application\chrome.exe" -remote-debugging-port=9222

为了确认调试是否正常工作,我在 Chrome 窗口中打开了链接 localhost:9222,它打开了一个空白页面,没有错误。

但是,运行 puppeteer 代码来连接到此打开的 Chrome 浏览器实例会出现以下错误:

ErrorEvent {
  [Symbol(kTarget)]: WebSocket {
    _events: [Object: null prototype] { open: [Function], error: [Function] },
    _eventsCount: 2,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 3,
    _receiver: null,
    _sender: null,
    _socket: null,
    _bufferedAmount: 0,
    _isServer: false,
    _redirects: 0,
    _autoPong: true,
    _url: 'ws://localhost:9222/',
    _originalIpc: false,
    _originalSecure: false,
    _originalHostOrSocketPath: 'localhost:9222',
    _req: ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: true,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: true,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: true,
      socket: [Socket],
      _header: 'GET / HTTP/1.1\r\n' +
        'User-Agent: Puppeteer 22.8.0\r\n' +
        'Sec-WebSocket-Version: 13\r\n' +
        'Sec-WebSocket-Key: 6MiJ7ERwGlj6SdBdUtCMIQ==\r\n' +
        'Connection: Upgrade\r\n' +
        'Upgrade: websocket\r\n' +
        'Host: localhost:9222\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: undefined,
      socketPath: undefined,
      method: 'GET',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      joinDuplicateHeaders: undefined,
      path: '/',
      _ended: true,
      res: [IncomingMessage],
      aborted: true,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'localhost',
      protocol: 'http:',
      [Symbol(shapeMode)]: false,
      [Symbol(kCapture)]: false,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype],
      [Symbol(errored)]: null,
      [Symbol(kHighWaterMark)]: 16384,
      [Symbol(kRejectNonStandardBodyWrites)]: false,
      [Symbol(kUniqueHeaders)]: null,
      [Symbol(kAborted)]: true,
      [Symbol(kError)]: undefined
    },
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
  },
  [Symbol(kType)]: 'error',
  [Symbol(kError)]: Error: Unexpected server response: 404
      at ClientRequest.<anonymous> (E:\Creativity\Linkedin Scraping\Scraper\node_modules\ws\lib\websocket.js:912:7)
      at ClientRequest.emit (node:events:518:28)
      at HTTPParser.parserOnIncomingClient (node:_http_client:698:27)
      at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)
      at Socket.socketOnData (node:_http_client:540:22)
      at Socket.emit (node:events:518:28)
      at addChunk (node:internal/streams/readable:559:12)
      at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
      at Readable.push (node:internal/streams/readable:390:5)
      at TCP.onStreamRead (node:internal/stream_base_commons:190:23),
  [Symbol(kMessage)]: 'Unexpected server response: 404'
}

您能帮我了解导致 404 错误的原因以及如何在 chrome 浏览器上成功建立远程调试吗?

更多信息:我的操作系统是 Windows 11。

我尝试使用 127.0.0.1 代替,它导致了相同的行为: Puppeteer 给出 404,但在 chrome 浏览器中打开成功

node.js windows web-scraping google-chrome-devtools puppeteer
1个回答
0
投票

就像这对我有用:

const browser = await puppeteer.connect({
  browserURL: 'http://127.0.0.1:9222'
})
© www.soinside.com 2019 - 2024. All rights reserved.