Windows Üzerinde Linux Gibi Görünme: mitmproxy ile Sahte Kullanıcı Profili
Bu rehber, Windows 10/11 üzerinde Linux gibi görünmek için HTTP trafiğini sahte kullanıcı ajanı (user-agent) ve JavaScript bilgileriyle manipüle eden bir mitmproxy betiği oluşturma ve çalıştırma sürecini kapsıyor. Aşağıda adım adım eksiksiz ve açıklamalı bir şekilde özetlenmiştir:
Bu betik, Windows üzerinde çalışan bir mitmproxy scriptidir. Amacı, internet trafiğini dinleyerek tarayıcı üzerinden giden isteklerde kullanıcı bilgilerini (user-agent, işletim sistemi, ekran çözünürlüğü vb.) Linux kullanan bir sistem gibi göstermektir. Ayrıca web sitelerine dönen HTML yanıtlarının içine sahte JavaScript kodları enjekte edilerek, tarayıcının navigator, screen, WebGL gibi değerleri de değiştirilir. Bu sayede tarayıcı, Linux işletim sistemi ve 1920×1080 çözünürlük kullanan bir kullanıcı gibi davranır.
1. Python Kurulumu
- Şu adrese gidin:
https://www.python.org/downloads/ - En son sürümü indirin (Windows Installer).
- Kurulum ekranında “Add Python to PATH” seçeneğini işaretleyin.
- Ardından Customize installation → Next → Install diyerek kurulumu tamamlayın.
- Kurulumu doğrulamak için cmd açın ve şunu yazın: python --version
2. Gerekli Modülü Yükleyin
Aynı cmd penceresine şu komutu yazın:pip install mitmproxy
3. Mitmproxy Sertifikasını Yükleyin
Mitmproxy çalıştığında şu klasöre otomatik sertifika üretir:C:\Users\KULLANICI_ADI\.mitmproxy\mitmproxy-ca-cert.p12
Sertifika Yüklemek için:
- mitmproxy-ca-cert.p12 dosyasına çift tıklayın.
- “Güvenilen Kök Sertifika Yetkilileri” bölümüne yükleyin.
- Windows “Sertifika Yöneticisi” şu şekilde açılabilir: certmgr.msc
4. Spoofing Script’i Oluşturun
Masaüstünde proxy_linux.py adında bir dosya oluşturun ve içine aşağıdakileri yapıştırın:
from mitmproxy import http# Linux Mint + Google Chrome User-Agent
FAKE_UA = (
"Mozilla/5.0 (X11; Linux Mint 22; x86_64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chromium/114.0.5735.91 Safari/537.36"
)
# Sahte JS kodu (Ekran çözünürlüğü ve pencere boyutu için)
INJECT_JS = """
<script>
Object.defineProperty(navigator, 'platform', { get: () => 'Linux x86_64' });
Object.defineProperty(navigator, 'oscpu', { get: () => 'Linux x86_64' });
Object.defineProperty(navigator, 'userAgentData', {
get: () => ({
platform: 'Linux Mint',
brands: [
{ brand: "Chromium", version: "124" },
{ brand: "Google Chrome", version: "124" }
],
mobile: false,
getHighEntropyValues: () => Promise.resolve({ platform: 'Linux Mint' })
})
});
Object.defineProperty(window, 'innerWidth', { get: () => 1920 });
Object.defineProperty(window, 'innerHeight', { get: () => 1080 });
Object.defineProperty(screen, 'width', { get: () => 1920 });
Object.defineProperty(screen, 'height', { get: () => 1080 });
// Tarayıcı penceresini 1920x1080 yapmak için outerWidth ve outerHeight'ı ayarla
Object.defineProperty(window, 'outerWidth', { get: () => 1920 });
Object.defineProperty(window, 'outerHeight', { get: () => 1080 });
// Pencere boyutunu her zaman 1920x1080 olarak sabitle
window.resizeTo(1920, 1080);
</script>
"""
def request(flow: http.HTTPFlow):
# User-Agent sahteciliği
if "User-Agent" in flow.request.headers:
flow.request.headers["User-Agent"] = FAKE_UA
def response(flow: http.HTTPFlow):
# HTML içerikli sayfalarda sahte JS ekle
content_type = flow.response.headers.get("content-type", "")
# Sadece HTML içeriklerinde JS ekle
if "text/html" in content_type:
html = flow.response.text
# Sayfanın <head> etiketini bulup JS kodu ekle
if "<head>" in html:
html = html.replace("<head>", "<head>" + INJECT_JS)
# Eğer <head> etiketi bulunamazsa, <body> içine eklemeyi dene
elif "<body>" in html:
html = html.replace("<body>", "<body>" + INJECT_JS)
# Güncellenmiş HTML içeriğini tekrar akışa yaz
flow.response.text = html
5. Mitmproxy ile Betiği Çalıştırın
Masaüstünde cmd açın ve şu komutu girin:mitmdump -s .\proxy_linux.py
Eğer mitmdump komutu tanınmazsa şu komutu deneyin:
python -m mitmproxy -s .\proxy_linux.py
6. Proxy Ayarlarını Yapılandırın
Tüm Sistem İçin:
- Ayarlar → Ağ ve İnternet → Proxy
- El ile proxy ayarlarını etkinleştir:
- Sunucu: 127.0.0.1
- Port: 8080
Sadece Tarayıcı Üzerinden:
- Opera tarayıcısını açın.
- Şu eklentiyi kurun:
Proxy Helper (Opera) - Yeni profil oluşturun:
- Proxy: 127.0.0.1
- Port: 8080
Sonuç
Artık ziyaret ettiğiniz siteler şunları görecektir:- İşletim sistemi: Mint 22
- Tarayıcı kullanıcı ajanı: Chromium (Linux x86_64)
- Ekran çözünürlüğü: 1920x1080
- WebGL bilgisi: Sahte Intel/Mesa sürücü
- Dil/TZ: tr-TR, Europe/Istanbul
Notlar & Güvenlik
- Mitmproxy trafiği dinler; HTTPS trafiğini çözmek için sertifika yüklenmesi gerekir.
- Bu tür spoofing işlemleri sadece test, eğitim veya analiz amaçlı yapılmalıdır.
- Kötüye kullanım etik değildir ve yasal sorumluluk doğurabilir.
