CONNECT 200 döndürüp TLS hemen kod çözemezse, sertifikaları veya şifreleri değiştirmeden önce bağlayıcıdaki sınır baytlarını inceleyin.

Oluşturulan bir yetkilendirme değeri zaten yeni bir satırla bitiyor olabilir. Bir satır sonu daha eklemek HTTP başlıklarını erken bitirebilir ve istenen Host alanını veya başka düz metni isteğin arkasında bırakabilir.

Asgari bir HTTP/1.1 CONNECT isteği satırlar arasında CRLF ve sonunda boş bir satır kullanır:

b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"

Herhangi bir yetkilendirme alanını o son boş satırdan önce, içine satır sonu eklemeden yerleştirin. Python'da "\n" yeni bir satırı temsil eder; ters bölü ve n harfi içeren ham bir dize temsil etmez. Kaldırmaya çalışmadan önce kodlama yardımcısının hangi baytları ürettiğini kontrol edin—eski yardımcılar satır sonları ekleyebiliyordu.

CONNECT başarılı olduktan sonra, kalan bu baytlar tünel protokolüne aittir. Başıboş düz metin TLS bekleyen bir eşe ulaşabilir. Başarı durumu, hatalı biçimlendirilmiş bir isteğin ardından zaten kuyruğa alınmış baytları onaramaz.

Alım sınırını da inceleyin. Soketi TLS'e vermeden önce tam proxy yanıtını okuyun, kısmi okumaları işleyin ve başlıkların ötesinde okunan her şeyi koruyun. Tek bir soket okuması tek bir tam mesaj içermek zorunda değildir.

Bu ayrıştırıcı sizinse, redakte edilmiş bir bayt gösterimini tel dilbilgisiyle karşılaştırın; parolayı gizlerken uzunlukları ve satır sınırlarını görünür tutun. Yalnızca proxy bağlantısı gerektiren bir uygulama için, bakımı yapılan bir bağlayıcı bu çerçeveleme koduna sahip olma zorunluluğunu ortadan kaldırır.

İlgili makaleler