Ìlà tuntun àfikún kan lè fọ́ TLS lẹ́yìn CONNECT
Ṣàyẹ̀wò ìṣètò àwọn àkọsílẹ̀ HTTP nígbà tí asopọ̀ proxy tí a fi ọwọ́ kọ bá ṣí ojú-ọ̀nà kan tí ó sì ṣe àṣìṣe TLS lẹ́sẹ̀kẹsẹ̀.
Nígbà tí CONNECT bá dá 200 padà tí TLS kò sì lè ṣàtúpalẹ̀ lẹ́sẹ̀kẹsẹ̀, ṣàyẹ̀wò àwọn byte ààlà nínú asopọ̀ náà kí o tó yí àwọn ẹ̀rí jẹ́rìí tàbí cipher padà.
Iye àṣẹ tí a ṣẹ̀dá lè ti parí pẹ̀lú ìlà tuntun. Fífi ìparí ìlà mìíràn kún lè parí àwọn àkọsílẹ̀ HTTP ní àkọ́kọ́, tí yóò fi pápá Host tí a pinnu tàbí ọ̀rọ̀ àkọsílẹ̀ mìíràn sílẹ̀ lẹ́yìn ìbéèrè náà.
Ìbéèrè HTTP/1.1 CONNECT tí ó kéré jù ń lo CRLF láàárín àwọn ìlà àti ìlà òfo ní ìparí:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"Fi èyíkéyìí pápá àṣẹ síwájú ìlà òfo ìkẹyìn yẹn, láìsí ìdákẹ́ ìlà tí a fi sínú. Nínú Python, "\n" dúró fún ìlà tuntun; okùn àìtúnṣe tí ó ní backslash àti lẹ́tà n kò dúró bẹ́ẹ̀. Ṣàyẹ̀wò àwọn byte tí olùrànlọ́wọ́ ìkóòdù ń ṣẹ̀dá kí o tó gbìyànjú láti yọ wọ́n kúrò—àwọn olùrànlọ́wọ́ àtijọ́ lè ṣe àfikún ìdákẹ́ ìlà.
Nígbà tí CONNECT bá ṣàṣeyọrí, àwọn byte tó kù yẹn jẹ́ ti ìlànà ojú-ọ̀nà náà. Ọ̀rọ̀ àkọsílẹ̀ tí ó sọnù lè dé ọ̀dọ̀ ẹlẹgbẹ́ tí ó ń retí TLS. Ipò àṣeyọrí kò lè tún àwọn byte tí ó ti wà nínú ìlà lẹ́yìn ìbéèrè tí kò tọ́ ṣe.
Ṣàyẹ̀wò ààlà gbígbà pẹ̀lú. Ka ìdáhùn proxy tí ó kún kí o tó fi sokẹ́ẹ̀tì náà fún TLS, ṣètò àwọn kíkà apá kan àti pa gbogbo ohun tí a kà ju àwọn àkọsílẹ̀ lọ mọ́.
Tí parser yìí bá jẹ́ tirẹ, fi ìṣàfihàn byte tí a ṣàtúnṣe wé gírámà okùn; jẹ́ kí àwọn gígùn àti ààlà ìlà hàn nígbà tí o ń fi ọ̀rọ̀ ìkọ̀kọ̀ pamọ́. Fún ohun èlò tí ó kàn nílò asopọ̀ proxy, asopọ̀ tí a ń tọ́jú ń yẹ́ra fún níní kóòdù ìṣètò yìí.