Rumah  >  Soal Jawab  >  teks badan

Ubah suai respons HTTP dalam sambungan Chrome

<p>Adakah mungkin untuk membuat sambungan Chrome yang boleh mengubah suai badan respons HTTP? </p> <p>Saya telah melihat API sambungan Chrome dan tidak menemui apa-apa yang akan melaksanakan fungsi ini. </p>
P粉038161873P粉038161873395 hari yang lalu573

membalas semua(2)saya akan balas

  • P粉311464935

    P粉3114649352023-08-22 20:54:03

    Saya baru sahaja mengeluarkan sambungan Devtools yang melakukan perkara itu :)

    Ia dipanggil tamper, berdasarkan mitmproxy, dan ia membolehkan anda melihat semua permintaan yang dibuat oleh tab semasa, mengubah suainya dan menyampaikan versi yang diubah suai pada muat semula seterusnya.

    Ini adalah versi yang agak awal tetapi harus serasi dengan OS X dan Windows. Jika ia tidak berkesan untuk anda, sila beritahu saya.

    Anda boleh mendapatkannya di sini: http://dutzi.github.io/tamper/

    Cara ia berfungsi

    Seperti komen @Xan di bawah, sambungan berkomunikasi melalui pemesejan asli dengan skrip Python yang memanjangkan mitmproxy.

    Sambungan ini menggunakan chrome.devtools.network.onRequestFinished untuk menyenaraikan semua permintaan.

    Apabila anda menekan salah satu permintaan, ia memuat turun responsnya menggunakan kaedah getContent() objek permintaan dan kemudian menghantar respons itu kepada skrip Python yang disimpan secara setempat.

    Ia kemudian membuka fail dalam editor menggunakan call(对于OSX)或subprocess.Popen (untuk Windows).

    Skrip Python menggunakan mitmproxy untuk mendengar semua komunikasi yang melalui proksi dan jika ia mengesan permintaan untuk fail yang disimpan, ia akan menyampaikan fail yang disimpan.

    Saya menggunakan API proksi Chrome (khususnya chrome.proxy.settings.set()) untuk menetapkan PAC sebagai tetapan proksi. Fail PAC ini mengubah hala semua komunikasi ke proksi skrip Python.

    Perkara terbaik tentang mitmproxy ialah ia juga boleh mengubah suai komunikasi HTTPS. So boleh pakai juga :)

    balas
    0
  • P粉561323975

    P粉5613239752023-08-22 18:26:03

    Secara amnya, anda tidak boleh menukar badan respons permintaan HTTP menggunakan API sambungan Chrome standard.

    Ciri ini sedang diminta pada 104058: API WebRequest: Benarkan sambungan untuk mengedit badan respons . Tandai halaman soalan ini untuk mendapatkan pemberitahuan tentang kemas kini.

    Jika anda ingin mengedit badan respons XMLHttpRequest yang diketahui, sila hantar skrip kandungan Inject kod XMLHttpRequest的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequest untuk mengatasi pembina XMLHttpRequest lalai dan gunakan pembina tersuai (ciri-lengkap) Fungsi menulis semula badan tindak balas sebelum mencetuskan peristiwa sebenar. Pastikan objek XMLHttpRequest anda serasi sepenuhnya dengan objek XMLHttpRequest Chrome terbina dalam, jika tidak, ia akan menyebabkan masalah pada tapak web yang berat AJAX.

    Dalam kes lain, anda boleh menggunakan chrome.webRequestchrome.webRequestchrome.declarativeWebRequest API将请求重定向到data:-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame请求,用户将看到data: atau < kod >chrome.declarativeWebRequest

    API mengubah hala permintaan ke data:-URI. Tidak seperti kaedah XHR, anda tidak akan dapat mendapatkan kandungan permintaan asal. Malah, permintaan itu tidak pernah sampai ke pelayan kerana ubah hala hanya boleh diselesaikan sebelum permintaan sebenar dihantar. Jika anda mengubah hala permintaan main_frame, pengguna akan melihat data:-URI dan bukannya URL yang diminta. 🎜

    balas
    0
  • Batalbalas