psocks: моє бачення фільтруючого проксі
Після невеличкої передісторії
ШІт досвід з tun2proxy/socks-hub
Зробив собі "білий список" засобами PAC
Crab-hole DNS як 100% програмна альтернатива Pi-hole
Ручне встановлення Pi-hole DNS на прикладі Fedora / Linux
Організація локального дзеркала залежностей Cargo з Kellnr
в пошуках рішення для блокування паразитних конектів що палять мою приватність і їдять батарею SSH тунелюванням того сміття, погравшись день-другий з білими списками PAC, виявив для себе юзабельність такої концепції: сайти реально працюють.
Наприклад, для Youtube - достатньо додати 2 технічні домени `.ytimg.com` і `.googlevideo.com` а для Github - лише `.githubusercontent.com`. Тобто Веб цілком можна сьорфити, враховуючи, що 99% трафіку не полишає соціальні мережі та платформи типу Stackoverflow, да і то, я останнім часом не вилажу з Duck.ai.
Коротше вирішив таки заморочитись і зробити собі софтинку саме під свої задачі: тупо локальний проксі SOCKS, з файлами білих списків. Ніяких більше там складних синтаксисів налаштування - для них я піду на перевірений privoxy з ACL. Чому я ще вирішив написати велосипед, бо ніде не бачу чогось схожого до pi-hole, щоб можна було смакувати фільтровану статистику і робити на її основі висновки.
За одно, я вирішив зробити засобами JSON/API й можливість оновлювати списки "на льоту" без ребуту серверу проксі і перезавантаження реєстрів. Тут головне дійсно мати можливість швиденько розблокувати собі потрібний ресурс прямо в браузері. А статистика вже як бонус, зараз там не густо:

UPD. в новішій версії, статистика вже виглядає так:

Згодом планую розширити до звіту по доменам, хоча не знаю чи продуктивність сервера того варта...
- я ще спочатку хотів зробити саме HTTP проксі з рандомайзером заголовків, але провтикав специфіку тунелювання HTTPs, тому протокол обрано саме SOCKS5.
- будувати ланцюги проксі засобами цього сервера я не планую, натомість буду пускати окремими процесами, а коли мені знадобляться складні правила, використовуватиму сторонні маршрутні проксі типу proxychains або знову таки, PAC файл.
- за якість коду не ручаюсь, бо працював швидко, щоб отримати результат; я поки не дуже орієнтуюсь в `tokio` і асинхронному програмуванні зокрема, але у якості бази було використано офіційний приклад (github.com/dizda/fast-socks5/blob/master/examples/server.rs) - з прикладу я не випилював імплементацію UDP, бо ще не визначився.
І так, над назвою довго не думав, знайомтесь:
https://codeberg.org/postscriptum/psocks
Також, списки для нього:
https://codeberg.org/postscriptum/psocks-list
Дивіться також
Про оригінальне йменування проєктів на прикладі psocks
Реліз psocks v0.5.0 з підтримкою мульти-списків
/uk/