2012-07-21 11 views
14

Jestem świadomy, że chrome.webRequest.onBeforeRequest pozwala na przechwycenie, analizę i blokowanie żądania, ale pozwala tylko na dostęp do nagłówków żądań, a nie na treść żądania (o ile wiem).Obiekt żądania transkrypcji HTTP z rozszerzenia chrome

Przykład użycia próbki: pomyśl przechwytywanie wartości formularza.

Wygląda na to, że istnieje propozycja zmiany interfejsu API here sugerująca dokładnie to.

Czy można to osiągnąć w inny sposób?

Dzięki.

+2

przechwytywanie ciał odpowiedź/żądania w tej chwili nie jest możliwe za pomocą wbudowanego w Chrome API. Odpowiednia część najnowszego kodu źródłowego (http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/web_request/) nie zawiera żadnych znaków takiej funkcji. Jeśli nie możesz żyć bez tej funkcji, możesz odkryć [możliwości] (http://stackoverflow.com/tags/npapi/info) wtyczek NPAPI (http://code.google.com/chrome) /extensions/npapi.html) lub uruchom serwer (lokalny) i przekieruj określone żądania na twój lokalny serwer. –

+0

To niefortunne. NPAPI wydaje się przesadą dla moich potrzeb. Dzięki za odpowiedź. – Ped

Odpowiedz

9

Ta funkcja została dodana do interfejsu API, patrz: documentation.

W celu uzyskania dostępu do ciała trzeba wykonać następujące czynności:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) 
    { 
     console.log(details.requestBody); 
    }, 
    {urls: ["https://myurlhere.com/*"]}, 
    ['requestBody'] 
); 
+0

Ojej, to jest niesamowite. Dzięki za ping. – Ped

+1

Dla mnie zawsze zwraca undefined. Może tylko dla kanału beta? – BeauCielBleu

+0

@BeauCielBleu może nie być treści żądania. Spróbuj zarejestrować adres URL: 'console.log (" url: "+ details.url);' – georgiecasey

2

Chociaż możesz nie być w stanie przechwycić, możesz użyć standardowego podejścia AJAX do taśmy taśmowej. Zamiast tworzenia żądania href sprawdź, czy możesz wykonać wywołanie asynchroniczne i zapisać je w obiekcie HTML, który nie jest prezentowany. Następnie zeskanuj/odczytaj/przeanalizuj/dowolne kryteria twojego ciała, a jeśli przeminie, popchnij ten obiekt z powrotem do bieżącego okna/strony.

Przechowywanie zawartości w elemencie suppressed, a następnie użycie tego samego elementu dla zawartości, pozwoli uniknąć powtarzania połączeń. Minusem jest to, że dostaniesz pełną treść na rzeczy, których nie wykorzystasz. Może to być problem z przepustowością/szybkością lub nie.

Powiązane problemy