ПОДКЛЮЧАЕМ PROXY НА FIREFOX

21-й век ознаменовался тем, что мы разучились жить без Интернета. И все бы хорошо, но времена теперь сложные - ни тебе демократии, ни свободы слова, кругом слежка, кругом контроль, многие ресурсы блокируются, в этом смысле становится все тяжелее и тяжелее с каждым днем. Лино для меня критичен доступ к известному роботу-ебоботу, пиздабол-чату, который, слава Богу, не умеет программировать... Но есть и другие проблемы, например, Ютуб...  И goodbyedpi далеко не всегда спасает, потому что на каждую хитрую жопу обязательно найдется хуй с винтом, а на хуй с винтом жопа с лабиринтом, а на жопу с лабиринтом хуй с путеводителем, и так далее до бесконечности. Тем не менее, мы не отчаивамся, а пользуемся VPN или Proxy, которые пока еще позволяют жить относительно свободно. Объяснять что такое VPN или Proxy я здесь не буду, отмучу только что это не одно и тоже. Известно, что в природе существуют общедоступные бсплатные варианты подобных сервисов... Однако, как показывает практика - все они работают через какую-то жопу. Или даже не работают вовсе. Потому что IP известных VPN-провайдеров периодически точно так же зарубают, как всякие "рутрэкеры" и т. д., и они не всегда успевают подтягиваться в этой бесконечной диалектической борьбе щита и меча, к тому же у них есть свои шкурные интересы, чтобы мы, подсев на их бесплатное удобство, в конце-концов решили платить им по 5, а то и 10 баксов в меясц за копеечную услугу. Меня лично за эти 5 баксов жутко душит жаба. Наверно, чисто-принципиально.  В идеале это должно стоить 30 центов. Поэтому здесь мы рассмотрим как подключиться к моему собственному Proxy с блэкджеком и шлюхами, имея в виду, что это, конечно, тоже платно, но не дорого, и это не какая-нибудь коммерция, потому что весь "общак" идет на оплату VPS сервера, не мне в карман, а нам, и таким образом получается, что речь идет скорее просто о небольшой кооперации чисто в среде друзей и коллег, чтобы максимально сократить издержки на содержание общего сервиса за счет равномерного распределения затрат между всеми абонентами. Так, например, на 6 человек выйдет по сотке рублей, а если абонентов 10, то всего по 60 р. с носа, и так далее. Всякие техниеские нюансы и размеры складчины будем обсуждать в специальной группе в ТГ, надо еще продумать какие-то правила вступления, чтобы не обижать тех, кто уже оплатил большую сумму до подключения новых пользователей. Как мне видится, первый месяц даже особо нет смысла париться по поводу оплаты, надо хотя бы в демо-режиме набрать людей в группу, заодно протестировать сервак под какой-нибудь нагрузкой, чтобы понять какие нам лучше подходят тарифы и способы. Вступайте, товарищи, пока никаких правил нет! Даешь свободу в Интернете!

КАК ЭТО РАБОТАЕТ:

Легко! Скачиваем скрипт configure_firefox_proxy.ps1... Снала была идея сделать что-то типа "батника", но очень скоро выяснилось, что это бредовая затея, которая если бы даже и работала, то через жопу, а вот вариант на православном Си++, как обычно, не подвел. Короче, скачиваем программу, выключаем Firefox, запускаем программу, включаем Firefox.

madProxy.exe

Программа не содержит вирусов, листинг ниже, в конце статьи.

Кстати, у некоторых может возникнуть вопрос: а почему именно Firefox? Да потому что все другие используют глобальные настройки операционной системы (Виндоз, имеется в виду, или Линукс, или что там у вас еще - может, Фряха?..), а нам, чтобы смотреть Ютуб и чатиться с роботом-ебоботом, такое не нужно! У Мозиллы есть свои локальные настройки Proxy, не затрагивающие всю систему, поэтому выбираем ее. Далее сообщаем мне в ватсап или телегу желаемые логин и пароль, я вношу их в систему (из соображения защиты от бабуинов лавочка прикрыта для чужих), потом вы включаете браузер, вводите их в специальное поле и пользуетесь наздоровье.

Ссылка на канал в ТГ с новостями.

Ссылка на группу в ТГ, где можно поспрашивать и пофлудить. Именно здесь принимаются заявки на участие.

Ручная настройка для Firefox:

  1. Откройте настройки Firefox.
  2. Нажмите в правом верхнем углу на квадратик, составленный из трех горизонтальных полосочек.
  3. Выберите опцию "Настройки"
  4. Далее скролим до упора вниз, там есть раздел "Настройки сети" и справа внизу кнопочка "Настроить".
  5. Выберите опцию "Ручная настройка прокси".
  6. Введите IP-адрес вашего сервера и порт 3128 для HTTP и HTTPS прокси.
  7. После подключения браузер запросит логин и пароль, используйте свои входные данные.

f options

 

 

 

 

firefox proxy2

 

 

 firefox proxy3

Тут прописываем IP 94.131.110.190 и порт 3128.

После всего этого шаманства браузер попросит ввести логин и пароль. Вводим свои данные, радуемся жизни.

firefox proxy4

Еще бывает возможность прописать прокси глобально для Windows. Однако я не рекомендую это делать.

Глобальная настройка для Windows:

Нажимаем кнопочки:

Win+R

 inetcpl.cpl

После этого:

  1. Откроется окно Свойства обозревателя.
  2. Перейдите на вкладку Подключения.
  3. Нажмите кнопку Настройка сети в разделе Настройка локальной сети (LAN).
  4. В открывшемся окне вы сможете настроить параметры прокси для всей системы.

proxy settings 1

Тут прописываем IP 94.131.110.190 и порт 3128

При такой настройке у вас все браузеры, кроме персонально настроенного Firefox, будут работать через прокси, что может заметно снизить скорость и стабильность работы Интернет. Прокси нужен только для обхода блокировок, больше практически ни для чего. Для просмотра ютуб, для доступа к торрент-трекерам, площадкам для бесплатного просмотра кино и так далее, но если вы, предположим, играете в Танчики, сидите в 1С через тонкий клиент или еще что-нибудь в таком духе, то глобальная настройка прокси вам только помешает, поэтому лучше используйте для этих целей Firefox.


 

 madProxy.cpp

/*
Текущая версия madProxy 1.0
*/
#include <windows.h>
#include <fstream> #include <string> #include <filesystem> #include <sstream>   // Функция для получения активного профиля Firefox std::wstring GetFirefoxProfilePath() { wchar_t* appData = _wgetenv(L"APPDATA"); if (!appData) { return L""; }   std::filesystem::path firefoxPath = std::wstring(appData) + L"\\Mozilla\\Firefox"; std::filesystem::path profilesIniPath = firefoxPath / "profiles.ini";   if (!std::filesystem::exists(profilesIniPath)) { return L""; }   std::wifstream profilesFile(profilesIniPath.c_str()); if (!profilesFile) { return L""; }   std::wstring line; std::wstring profilePath; bool isDefault = false;   while (std::getline(profilesFile, line)) { if (line.find(L"Default=1") != std::wstring::npos) { isDefault = true; }   if (line.find(L"Path=") != std::wstring::npos) { profilePath = line.substr(line.find(L'=') + 1); if (isDefault) { break; } } }   profilesFile.close();   if (profilePath.empty()) { return L""; }   std::filesystem::path fullPath = firefoxPath / profilePath; return fullPath; }   int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { // Чтение конфигурационного файла std::wstring configFileName = L"proxy_config.txt"; std::wifstream configFile(configFileName.c_str()); if (!configFile) { MessageBoxW(NULL, L"Файл конфигурации не найден. Пожалуйста, убедитесь, что proxy_config.txt находится рядом с программой.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   std::wstring proxyIp; std::wstring proxyPort; std::getline(configFile, proxyIp); std::getline(configFile, proxyPort); configFile.close();   if (proxyIp.empty() || proxyPort.empty()) { MessageBoxW(NULL, L"Некорректные данные в файле конфигурации. Проверьте IP-адрес и порт.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Получение пути к профилю Firefox std::wstring profilePath = GetFirefoxProfilePath(); if (profilePath.empty()) { MessageBoxW(NULL, L"Не удалось найти профиль Firefox. Убедитесь, что Firefox установлен и запущен хотя бы один раз.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Путь к prefs.js std::filesystem::path prefsFilePath = std::filesystem::path(profilePath) / L"prefs.js"; // Исправлено   if (!std::filesystem::exists(prefsFilePath)) { MessageBoxW(NULL, L"Файл prefs.js не найден в профиле Firefox.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Открываем prefs.js для добавления настроек прокси std::ofstream prefsFile(prefsFilePath.string(), std::ios::app); // Приводим путь к строке if (!prefsFile) { MessageBoxW(NULL, L"Не удалось открыть файл prefs.js для записи.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Настройки прокси (переводим std::wstring в std::string для записи в файл) std::string proxyIpStr(proxyIp.begin(), proxyIp.end()); std::string proxyPortStr(proxyPort.begin(), proxyPort.end());   prefsFile << "user_pref(\"network.proxy.type\", 1);\n"; prefsFile << "user_pref(\"network.proxy.http\", \"" << proxyIpStr << "\");\n"; prefsFile << "user_pref(\"network.proxy.http_port\", " << proxyPortStr << ");\n"; prefsFile << "user_pref(\"network.proxy.ssl\", \"" << proxyIpStr << "\");\n"; prefsFile << "user_pref(\"network.proxy.ssl_port\", " << proxyPortStr << ");\n"; prefsFile << "user_pref(\"network.proxy.no_proxies_on\", \"\");\n";   prefsFile.close();   MessageBoxW(NULL, L"Настройки прокси были успешно применены. Пожалуйста, перезапустите Firefox, чтобы они вступили в силу.", L"Успех", MB_ICONINFORMATION | MB_OK);   return 0; }  

 madProxy.cpp

/*
Версия madProxy 1.1 с конфигурационным файлом. Тут есть возможность настройки любого ip и порта.
Отказался из-за чрезмерной сложности.
*/

#include <windows.h>
#include <fstream> #include <string> #include <filesystem> #include <sstream>   // Задаем IP-адрес и порт прокси const std::wstring PROXY_IP = L"94.131.110.190"; const std::wstring PROXY_PORT = L"3128";   // Функция для получения активного профиля Firefox std::wstring GetFirefoxProfilePath() { wchar_t* appData = _wgetenv(L"APPDATA"); if (!appData) { return L""; }   std::filesystem::path firefoxPath = std::wstring(appData) + L"\\Mozilla\\Firefox"; std::filesystem::path profilesIniPath = firefoxPath / "profiles.ini";   if (!std::filesystem::exists(profilesIniPath)) { return L""; }   std::wifstream profilesFile(profilesIniPath.c_str()); if (!profilesFile) { return L""; }   std::wstring line; std::wstring profilePath; bool isDefault = false;   while (std::getline(profilesFile, line)) { if (line.find(L"Default=1") != std::wstring::npos) { isDefault = true; }   if (line.find(L"Path=") != std::wstring::npos) { profilePath = line.substr(line.find(L'=') + 1); if (isDefault) { break; } } }   profilesFile.close();   if (profilePath.empty()) { return L""; }   std::filesystem::path fullPath = firefoxPath / profilePath; return fullPath; }   int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { // Получение пути к профилю Firefox std::wstring profilePath = GetFirefoxProfilePath(); if (profilePath.empty()) { MessageBoxW(NULL, L"Не удалось найти профиль Firefox. Убедитесь, что Firefox установлен и запущен хотя бы один раз.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Путь к prefs.js std::filesystem::path prefsFilePath = std::filesystem::path(profilePath) / L"prefs.js";   if (!std::filesystem::exists(prefsFilePath)) { MessageBoxW(NULL, L"Файл prefs.js не найден в профиле Firefox.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Открываем prefs.js для добавления настроек прокси std::ofstream prefsFile(prefsFilePath.string(), std::ios::app); if (!prefsFile) { MessageBoxW(NULL, L"Не удалось открыть файл prefs.js для записи.", L"Ошибка", MB_ICONERROR | MB_OK); return 1; }   // Настройки прокси std::string proxyIpStr(PROXY_IP.begin(), PROXY_IP.end()); std::string proxyPortStr(PROXY_PORT.begin(), PROXY_PORT.end());   prefsFile << "user_pref(\"network.proxy.type\", 1);\n"; prefsFile << "user_pref(\"network.proxy.http\", \"" << proxyIpStr << "\");\n"; prefsFile << "user_pref(\"network.proxy.http_port\", " << proxyPortStr << ");\n"; prefsFile << "user_pref(\"network.proxy.ssl\", \"" << proxyIpStr << "\");\n"; prefsFile << "user_pref(\"network.proxy.ssl_port\", " << proxyPortStr << ");\n"; prefsFile << "user_pref(\"network.proxy.no_proxies_on\", \"\");\n";   prefsFile.close();   MessageBoxW(NULL, L"Настройки прокси были успешно применены. Пожалуйста, перезапустите Firefox, чтобы они вступили в силу.", L"Успех", MB_ICONINFORMATION | MB_OK);   return 0; }