Отдельные Proxy для каких-то URL/доменов (прокси правила в браузере)

  • Автор темы Автор темы Lord_Alfred
  • Дата начала Дата начала

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Реакции
3 883
Баллы
113
В последнее время всё чаще приходится использовать 2 прокси провайдера: первый с засранными и дешевыми прокси (но с отличной скростью + аптаймом), а второй с дорогими приватными прокси, но с ограничением по потокам или трафику.

Хочется иметь возможность в браузере пустить часть URL по маске/регулярке через какой-то другой прокси (второго типа), а основные данные чтоб передавались через прокси первого типа. Это поможет ускорить прохождение множества защит, которые встраиваются (рекапча как яркий пример), и в целом позволит использовать различные хитрые сценарии по экономии трафика/потоков на дорогих прокси-провайдерах.

Предлагаю сделать метод:
C#:
Развернуть Свернуть Копировать
public void SetProxy(
   string proxyString,
   bool useProxifier,
   bool emulateGeolocation,
   bool emulateTimezone,
   bool emulateWebrtc,

   IEnumerable<string> regexUrls
)
, где последний параметр - как раз будет списком урлов-регулярок для работы устанавливаемого прокси.

PS: всё это можно реализовать через get/post, но нужно переписывать и парсить очень много параметров, которые могут случайным образом добавляться и мешать.
 
Хитро...
Лучше сразу привести пример более понятный как оно должно переключаться и сразу условия переключения прямо читабельным примером.
 
Оно будет просто для указанных url'ов использовать какие-то другие прокси. Это как черные списки или как instance.ChangeResponse, только интереснее
 
Апну, есть какое-нибудь адекватное решение?

Нужно сделать подгрузку тяжелых JS с одной прокси, а остальные запросы с других.
Как бы можно сделать через правила проксифаера, но возникает проблема - невозможно юзать "сессии" проксей (когда ип привязывается к сессии, которую мы передаем в юзернейме. Например, у Люминати).
 
Гемор в том что придётся парсить каждый запрос... есть плагин FoxyProxy - есть там эти настройки, тупит при нескольких правилах довольна сильно...
 
  • Спасибо
Реакции: Nick
Реализация функции, подобной Proxifier, выше, чтобы указать, что соответствующие URL не переходят на прокси-сервер - это замечательно, и лучше всего указывать такие форматы, как jpg, png, mp3, mp4, js, avi и т.д.
 
  • Спасибо
Реакции: lbvf65
Очень нужная функция, как раз на днях столкнулся с такой проблемой, точнее проблема была давно, просто начал переоптимизировать проект, для ускорения работы и в итоге ничего не вышло из-за этой проблемы, невозможности разделить трафик на с прокси/без
 
rostonix,
sergodjan66

обратите внимание на инициативу, очень полезная фича, в идеале что бы проксирование работало не только в пределах целого домена, а по регулярке на отдельных его эндпоинтах, это умеет плагин FoxyProxy, о нем уже писали в этой теме теме, но в итоге реализовали просто белый/черный список, это как бы совсем не маршрутизация трафика, было бы полезно реализовать задумку, многие шаблоны получилось бы сделать более резко работающими которые не представляется возможным полностью на post|get переписать.
 
  • Спасибо
Реакции: Castaneda
Присоединяюсь к инициативе. Реализация конечно несколько сложная, думаю на это уйдет не мало времени, даже если и начать всё это делать, но по итогу функционал будет востребован. Тем более если неокрепшим умам объяснить возможности функционала в FAQ с примерами применения.
 
  • Спасибо
Реакции: Castaneda
Да, это очень актуальная штука
 
подкину юзкейс - есть продавцы прокси, которые блочат доступ к гугловским штуковинам. например, рекапча. можно было бы с помощью этой темы решить эту проблему? а то приходится еще больше прокси покупать под разные задачи...
 
подкину юзкейс - есть продавцы прокси, которые блочат доступ к гугловским штуковинам. например, рекапча. можно было бы с помощью этой темы решить эту проблему? а то приходится еще больше прокси покупать под разные задачи...
что решить то ? это тема предложений для разработчиков зенки...
эта тема не реализована в жизнь.
 
В последнее время всё чаще приходится использовать 2 прокси провайдера: первый с засранными и дешевыми прокси (но с отличной скростью + аптаймом), а второй с дорогими приватными прокси, но с ограничением по потокам или трафику.

Хочется иметь возможность в браузере пустить часть URL по маске/регулярке через какой-то другой прокси (второго типа), а основные данные чтоб передавались через прокси первого типа. Это поможет ускорить прохождение множества защит, которые встраиваются (рекапча как яркий пример), и в целом позволит использовать различные хитрые сценарии по экономии трафика/потоков на дорогих прокси-провайдерах.

Предлагаю сделать метод:
C#:
Развернуть Свернуть Копировать
public void SetProxy(
   string proxyString,
   bool useProxifier,
   bool emulateGeolocation,
   bool emulateTimezone,
   bool emulateWebrtc,

   IEnumerable<string> regexUrls
)
, где последний параметр - как раз будет списком урлов-регулярок для работы устанавливаемого прокси.

PS: всё это можно реализовать через get/post, но нужно переписывать и парсить очень много параметров, которые могут случайным образом добавляться и мешать.

тоже сталкивался с такой проблемой. Решал сильной оптимизацией, отключением всего, что возможно и частично переводил на POST-GET, но нормального потребления трафика добиться очень сложно.

Поддерживаю идею
 
Есть исправленная таска по CEF, теперь должен работать --proxy-bypass-list.
Как решение подходит?
 
  • Спасибо
Реакции: Bas и udder
Есть исправленная таска по CEF, теперь должен работать --proxy-bypass-list.
Как решение подходит?

Ну это все-таки 'bypass' на ИП машины, вот если бы какой-нибудь --proxy-pac-url=<pac-file-url> пережевывало (ибо вроде бы тоже не работало), тогда было бы интереснее.
 
  • Спасибо
Реакции: Max Gudym
Только для CEF или для хроминиума этот аргумент подходит?

--proxy-bypass-list="myip.ru" проверил. Установил прокси, при заходе на Myip.ru прокси не работает, это как и надо, но почему в мониторе трафика всеровно при запросе на myip.ru прокси отображается?
 
Последнее редактирование:
  • Спасибо
Реакции: Yuriy Zymlex
  • Спасибо
Реакции: lbvf65 и udder
Поддерживаю, очень не хватает такой функции. Пробовал при помощи плагина FoxyProxy, работает некорректно
 
есть какое то решение на сегодняшний день?
 
да, решил пока через Proxifier
Proxifier предназначен для всего домена, хорошего решения нет, конечно, вы можете использовать --proxy-bypass-list="*.google.com"
, но это, похоже, работает только для старого движка, а не для нового.


Возможно, мы можем попытаться перенаправить, часть URL ресурсов, указывающих на локальный, но предпосылка, что вам нужно развернуть локальный сервер подходит только для статических ресурсов, но и необходимость регулярного обслуживания, новый двигатель может быть установлен для расширения расширения внутри настройки соответствующих правил


В приведенном выше контенте используется функция перевода,
 
Последнее редактирование:
вы можете использовать --proxy-bypass-list="*.google.com"
, но это, похоже, работает только для старого движка, а не для нового.
да, в новой версии не работает так

что вы дальше написали - нифига не понял)
 
да, в новой версии не работает так

что вы дальше написали - нифига не понял)
Хорошо, давайте позволим ИИ объяснить это один раз. В конце концов, я не понимаю русский язык, и в переводе с китайского могут быть расхождения. Я проконсультировался с AI, а затем перевел его на русский язык. Надеюсь, вы поняли принцип его работы. Это также решение, которое пришло мне в голову в данный момент.

Вот перевод всего вышеизложенного плана на русский язык:

---

### **1. Разделение статических ресурсов и динамических запросов**
- **Статические ресурсы**: изображения (JPG/PNG), CSS-файлы, JavaScript (JS), шрифты и т.д. — обычно имеют большой размер, но редко обновляются.
- **Динамические запросы**: API, данные в реальном времени, статус авторизации — требуют постоянного взаимодействия с сервером.

**Стратегия**:
- Статические ресурсы → **локальный кэш** (чтение из локальных файлов, нулевой расход трафика)
- Динамические запросы → **прозрачный прокси** (передача через внешнюю сеть для сохранения функциональности)

---

### **2. Принципы реализации и инструменты**
#### **(1) Перехват и маршрутизация запросов**
- **DNS/Hosts-перенаправление**:
Изменение файла Hosts или настройка локального DNS-сервера для резолва домена (напр. `www.example.com`) в `127.0.0.1`:
```
# Пример записи в Hosts
127.0.0.1 www.example.com

- **Локальный веб-сервер** (напр. Nginx):
Настройка правил маршрутизации:
server {
listen 80;
server_name www.example.com;

# Локализация статических ресурсов
location ~* \.(css|js|png|jpg)$ {
root /путь/к/локальному/кэшу;
expires 7d;
}

# Проксирование динамических запросов
location /api/ {
proxy_pass https://real-server.example.com/;
proxy_set_header Host $host;
}
}

#### **(2) Локализация статических ресурсов**
- **Ручное кэширование**:
Загрузка файлов вручную с сохранением структуры путей (напр. `/локальный/кэш/css/style.css`).
- **Автоматическая синхронизация**:
Использование инструментов (напр. `wget --mirror`) для периодического обновления:

wget --mirror --convert-links --page-requisites --no-parent https://www.example.com

#### **(3) Прозрачное проксирование динамических запросов**
- **Обратный прокси**:
Локальный сервер перенаправляет запросы (напр. `/api/data`) на реальный сервер незаметно для пользователя.
- **Передача заголовков**:
Сохранение оригинальных Cookie, User-Agent и других данных для корректной аутентификации.

---

### **3. Сохранение пользовательского опыта**
#### **(1) Согласованность кэша**
- **Контроль версий**:
Мониторинг хэшей в URL статических ресурсов (напр. `style.abcd1234.css`), перезагрузка при изменениях.
- **Инкрементальное обновление**:
Синхронизация только измененных файлов.

#### **(2) Поддержка HTTPS**
- **Самоподписанные сертификаты**:
Генерация SSL-сертификатов для локального сервера и их установка в браузере.
- **Обход HSTS**:
Для сайтов с жесткими политиками безопасности потребуются инструменты вроде Charles Proxy.

#### **(3) Механизмы отказоустойчивости**
- **Резервное копирование**:
Автоматический переход к исходному серверу при отсутствии локальных ресурсов.
- **Повтор запросов**:
Логирование ошибок и попытки повторной отправки динамических запросов.

---

### **4. Преимущества и сложности**
| **Преимущества** | **Сложности** |
|-----------------------------------|-----------------------------------|
| - Экономия 90%+ трафика | - Требуется обслуживание сервера |
| - Ускорение загрузки статики | - Сложная настройка HTTPS |
| - Возможность кастомизации контента| - Динамические запросы требуют прокси |
| - Избежание нагрузки от глобального прокси | - Риск устаревания кэша при обновлениях |

---

### **5. Альтернативы для современных браузеров**
Для реализации без локального сервера:
- **Расширения браузера**:
Использование API `chrome.webRequest` для перехвата запросов:

javascript

chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if (details.url.includes('.jpg')) {
return { redirectUrl: chrome.runtime.getURL('local_image.jpg') };
}
},
{ urls: ["<all_urls>"] },
["blocking"]
);

- **Рекомендуемые инструменты**:
- [Resource Override]( https://chromewebstore.google.com/detail/resource-override/pkoacgokdfckfpndoffpifphamojphii) (перенаправление URL на локальные файлы)
- [Fiddler AutoResponder](https://www.telerik.com/fiddler) (замена трафика)

---

### **Итог**
Это решение **подходит для сайтов со статическим контентом** (документация, блоги), но требует значительных усилий для часто обновляемых ресурсов (соцсети). Оптимально кэшировать **крупные файлы** (изображения, видео), оставляя динамику на прокси, чтобы балансировать между экономией трафика и функциональностью.
 
Последнее редактирование:
Похоже, даже новейшие запреты РНК не в силах замотивировать разработчиков реализовать эту фичу.
 
Последнее редактирование модератором:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)