HTTP Raw İstek Parse
Basit bir HTTP sunucu kodlama
Github' da değişik dillerde yazılmış projeler var. Örneğin https://github.com/6si/http-parser adresindeki örneğe bakılabilir.
ile kütüphane kurulabilir. Fork'ladığım proje dosyalarına bakalım. https://github.com/kyilmaz80/http-parser/blob/master/examples/httpparser.py örnek koduna bakıldığında gunicorn.org url adresi 80 no'lu portu açılıp bu sokete aşağıdaki GET isteğinin yapıldığı görülür:
Burada \r\n satır sonu CR-LF karakteridir. Linux sistemlerdeki satır sonu kararteri ile Windows'daki farklıdır. Bazen unix2dos veya dos2unix ile dönüştürme yapmak gerekebilir.
\r\n satır sonu karakteri telnet yaptığımızda GET yazıp ENTER'a basmakla aynıdır. Yukardaki GET isteği ilk önce soketten okunup HttpParser objesine gönderilip execute() metodu ile parse edilmesi sağlanıyor. Parse tarafı C kodu ile yazılmış. Kod fazla uzun gibi gözükse de mantık olarak ilk önce ilk satır; daha sonra da başlık bilgileri parse ediliyor. Başlık bilgileri tamamıyla alındıktan sonra, sıra gövdeyi parse etmek kalıyor.
httpparser_from_file.py ı çalıştırdığımızda resp.txt içindeki raw isteğin başlık bilgileri dönülür.
Last updated
Was this helpful?