Python yordamida Web-trafikni O‘zgartirish
Last updated
Last updated
Web-trafikni o‘zgartirish – bu tarmoq orqali yuborilayotgan yoki kelayotgan ma’lumotlarni modifikatsiya qilish jarayonidir. Python’da bu jarayonni amalga oshirish uchun mitmproxy
kabi vositalardan foydalanish mumkin. mitmproxy
– bu man-in-the-middle (MITM) usulida ishlaydigan interaktiv proksi-server bo‘lib, u orqali tarmoq trafigini tahlil qilish, manipulyatsiya qilish va o‘zgartirish mumkin.
Avval mitmproxy
ni o‘rnatamiz:
mitmproxy
yordamida Web-trafikni Kuzatish va O‘zgartirishmitmproxy
yordamida o‘tkazilayotgan so‘rov va javob trafigini o‘zgartirish uchun Python skriptini yaratishimiz mumkin.
from mitmproxy import http
: mitmproxy
kutubxonasidan http
modulini import qilamiz. http
moduli yordamida HTTP so‘rov va javoblarga ishlov berish mumkin.
def request(flow: http.HTTPFlow) -> None
: request
funksiyasi har bir so‘rov yuborilganida chaqiriladi. flow
obyekti orqali so‘rov haqida barcha ma’lumotlarga kirishimiz mumkin.
flow.request.pretty_url
: Bu flow
obyekti ichidagi to‘liq URL manzilini o‘qish uchun ishlatiladi.
if "example.com" in flow.request.pretty_url
: URL manzilida example.com
bo‘lsa, shartni bajaradi va so‘rov o‘zgartiriladi.
flow.request.url = new_url
: flow.request.url
orqali so‘rov URL manzili o‘zgartiriladi. new_url
o‘zgaruvchisi sifatida o‘zgartirilgan manzil ko‘rsatiladi.
def response(flow: http.HTTPFlow) -> None
: response
funksiyasi serverdan javob kelganda chaqiriladi.
flow.response.status_code
: Javobning HTTP status kodini oladi. Bu orqali turli status kodlari uchun turli modifikatsiyalar qilish mumkin.
flow.response.text = "Bu modifikatsiya qilingan javob."
: Javob matnini o‘zgartiradi va uni yangi qiymat bilan almashtiradi.
mitmproxy
orqali so‘rov va javob sarlavhalarini o‘zgartirish mumkin. Quyidagi kodda har bir so‘rov uchun User-Agent
sarlavhasini o‘zgartirib, javob sarlavhasiga yangi ma’lumot qo‘shamiz.
flow.request.headers["User-Agent"] = "MyCustomUserAgent/1.0"
: User-Agent
sarlavhasini MyCustomUserAgent/1.0
bilan almashtiradi.
flow.response.headers["X-Modified-By"] = "mitmproxy"
: Javob sarlavhasiga X-Modified-By
qo‘shimcha sarlavhasini qo‘shadi, bu esa mitmproxy
tomonidan modifikatsiya qilinganini bildiradi.
Tahlil jarayonida so‘rov va javoblarni yozib olish foydali bo‘lishi mumkin. Bu maqsadda faylga yozish texnikasidan foydalanish mumkin.
with open("requests_log.txt", "a") as f
: Faylni qo‘shimcha yozish uchun ochadi. Bu har bir yangi yozuvda fayl oxiriga ma’lumot qo‘shiladi.
f.write(...)
: Ma’lumotlarni requests_log.txt
va responses_log.txt
fayllariga yozadi.
mitmdump
yordamida Skriptni Ishga TushirishYuqoridagi skriptlarni ishga tushirish uchun mitmdump
dan foydalanamiz, bu mitmproxy
uchun komandalik qatoridagi interfeys hisoblanadi. Skriptni quyidagi buyruq yordamida ishga tushiring:
-s "proxy_script.py"
: Skriptni yuklaydi va undagi funksiyalarni ishlaydi.
Quyidagi dastur yuqoridagi barcha funksiyalarni birlashtirgan to‘liq modifikatsiya dasturi hisoblanadi.
request()
funksiyasi:
So‘rov URL manzilini o‘zgartiradi (masalan, example.com
ni httpbin.org
ga).
User-Agent
sarlavhasini o‘zgartiradi.
So‘rov URL manzili va headersini requests_log.txt
fayliga yozadi.
response()
funksiyasi:
Javob matnini o‘zgartiradi (200 kodli javoblar uchun).
Javob headersiga X-Modified-By
sarlavhasini qo‘shadi.
Javob URL, status kodi va matnini responses_log.txt
fayliga yozadi.
So‘rovlarni faqat ruxsat etilgan tizimlar uchun modifikatsiya qiling: Tizim xavfsizligi va shaxsiy ma’lumotlarni himoya qilish uchun faqat o‘zingizga tegishli yoki ruxsat berilgan tizimlarda foydalaning.
Har bir so‘rov va javobni o‘zgartirishda ehtiyotkor bo‘ling: Web-trafikni o‘zgartirish tizimning ishlashiga ta’sir qilishi va ma’lumotlar xavfsizligini zaiflashtirishi mumkin.
Bu qo‘llanma yordamida siz web-trafikni o‘zgartirish va yozib olish jarayonini Python’da mitmproxy
yordamida amalga oshirishni o‘rgandingiz.