Privoxy: злучыць HTTP-кліент проксі з SOCKS-тунелем
Злучыце кліент проксі, які прымае толькі HTTP, з SOCKS-тунелем праз лакальны HTTP-проксі, замест таго каб перайменаваць порт тунеля.
Дынамічны SSH-тунель, у тым ліку дынамічнае перанакіраванне PuTTY, дае інтэрфейс SOCKS. Праграма, якая прымае толькі HTTP-проксі, не можа выкарыстаць гэты порт, проста назваўшы яго HTTP.
Паміж імі можа стаяць лакальны маст протакола. Праграма адпраўляе HTTP-запыты проксі масту, а маст адкрывае злучэнні да прызначэння праз службу SOCKS.
Privoxy апісвае такую схему ў сваіх правілах перанакіравання. Для існуючага лакальнага SOCKS5-тунеля фрагмент канфігурацыі такі:
forward-socks5 / 127.0.0.1:1080 .
Праграма падключаецца да HTTP-слухача Privoxy, а не да порта 1080. Трымайце гэты слухач лакальным у межах прынятай палітыкі доступу. Апошняя кропка ў правіле мае дакументаванае значэнне; гэта не запаўняльнік для адсутнага імя хаста ў інтэрнэце.
Гэта пераўтварэнне протакола
Дакументацыя Privoxy па перанакіраванні тлумачыць сінтаксіс SOCKS-перанакіравання і апрацоўку імён хастоў. Звычайнае перанакіраванне TCP-порта не робіць таго ж пераўтварэння: яно перадае HTTP-байты кліента без змен да слухача SOCKS, які ўсё яшчэ чакае перамовы SOCKS.
Маст таксама становіцца часткай канфігурацыі, якую трэба разумець. У Privoxy могуць быць свае налады фільтрацыі змесціва і доступу. Дадаць яго — не тое ж самае, што зрабіць так, каб зыходная праграма натыўна падтрымлівала SOCKS.
Для сайтаў HTTPS праграма звычайна запытвае CONNECT у HTTP-маста, а маст атрымлівае злучэнне з прызначэннем праз SOCKS. Звычайны TLS сайта застаецца адносінамі паміж праграмай і сайтам; масту не трэба выдаваць сябе за сайт, каб даць гэты шлях.
Калі праграма можа выкарыстоўваць SOCKS напрамую, лішні кампанент можа быць непатрэбным. Выкарыстоўвайце маст для вырашэння рэальнай неадпаведнасці пратаколаў, з ясным размежаваннем слухача і вышэйшага звяна.