Как использовать протокол удаленной отладки Google Chrome в HTTP?

#javascript #node.js #google-chrome-devtools

#javascript #node.js #google-chrome-devtools

Вопрос:

Я ссылался http://code.google.com/chrome/devtools/docs/remote-debugging.html .

Сначала я запустил новый процесс Chrome.

 chrome --remote-debugging-port=9222 --user-data-dir=remote-profile
 

Затем я хочу попробовать некоторые параметры, написанные на http://code.google.com/intl/ja/chrome/devtools/docs/protocol/tot/index.html , но как я могу их использовать?
Я уже знаю, как использовать эти методы в WebSocket, но я должен использовать его в HTTP.

Я попробовал этот код nodejs, но потерпел неудачу.

 var http = require('http');

var options = {
  host: 'localhost',
  port: 9222,
  path: '/devtools/page/0',
  method: 'POST'
};

var req = http.request(options, function (res) {
  console.log(res.headers);
  res.on('data', function (chunk) {
    console.log(chunk);
  });
});

req.on('error', function (e) { console.log('problem'   e.message); });
req.write(JSON.stringify({
  'id': 1,
  'method': "Page.enable"
}));
req.end();
 

Это неправильно?

Ответ №1:

Я знаю, что это довольно старый вопрос, но я столкнулся с ним, когда пытался сделать что-то подобное.

Есть вызываемый модуль npm chrome-remote-interface , который значительно упрощает использование API удаленной отладки Chrome: https://github.com/cyrus-and/chrome-remote-interface

 npm install chrome-remote-interface
 

Затем вы можете использовать модуль в своем коде следующим образом:

     var Chrome = require('chrome-remote-interface');
    Chrome(function (chrome) {
        with (chrome) {
            on('Network.requestWillBeSent', function (message) {
                console.log(message.request.url);
            });
            on('Page.loadEventFired', close);
            Network.enable();
            Page.enable();
            Page.navigate({'url': 'https://github.com'});
        }
    }).on('error', function () {
        console.error('Cannot connect to Chrome');
    });
 

Комментарии:

1. есть ли какой-либо способ сохранить message.request.url в переменной?

Ответ №2:

Я думаю, что в нем говорится: «Обратите внимание, что в настоящее время мы работаем над предоставлением протокола на основе HTTP, который не требует реализации клиентского WebSocket».

Я не уверен, что это означает, что теперь вы можете использовать HTTP вместо WebSocket.

Ответ №3:

Существует также фантастический модуль NPM под названием Weinre, который позволяет вам легко использовать инструменты отладки / удаленной отладки Chrome. Если вам нужно также протестировать кросс-браузер, он позволяет вам использовать инструменты Chrome даже в определенных версиях IE. В блоге MSDN есть дополнительная информация.