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

Lord_Alfred

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

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

Предлагаю сделать метод:
C#:
public void SetProxy(
   string proxyString,
   bool useProxifier,
   bool emulateGeolocation,
   bool emulateTimezone,
   bool emulateWebrtc,

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

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

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 957
Благодарностей
784
Баллы
113
Хитро...
Лучше сразу привести пример более понятный как оно должно переключаться и сразу условия переключения прямо читабельным примером.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 875
Баллы
113
Оно будет просто для указанных url'ов использовать какие-то другие прокси. Это как черные списки или как instance.ChangeResponse, только интереснее
 

dimafatality

Client
Регистрация
19.01.2014
Сообщения
265
Благодарностей
255
Баллы
63
Апну, есть какое-нибудь адекватное решение?

Нужно сделать подгрузку тяжелых JS с одной прокси, а остальные запросы с других.
Как бы можно сделать через правила проксифаера, но возникает проблема - невозможно юзать "сессии" проксей (когда ип привязывается к сессии, которую мы передаем в юзернейме. Например, у Люминати).
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 629
Благодарностей
1 023
Баллы
113
Гемор в том что придётся парсить каждый запрос... есть плагин FoxyProxy - есть там эти настройки, тупит при нескольких правилах довольна сильно...
 
  • Спасибо
Реакции: Nick

henry88

Client
Регистрация
31.12.2018
Сообщения
78
Благодарностей
26
Баллы
18
Реализация функции, подобной Proxifier, выше, чтобы указать, что соответствующие URL не переходят на прокси-сервер - это замечательно, и лучше всего указывать такие форматы, как jpg, png, mp3, mp4, js, avi и т.д.
 
  • Спасибо
Реакции: lbvf65

RootX

Client
Регистрация
25.08.2020
Сообщения
26
Благодарностей
2
Баллы
3
Очень нужная функция, как раз на днях столкнулся с такой проблемой, точнее проблема была давно, просто начал переоптимизировать проект, для ускорения работы и в итоге ничего не вышло из-за этой проблемы, невозможности разделить трафик на с прокси/без
 

RootX

Client
Регистрация
25.08.2020
Сообщения
26
Благодарностей
2
Баллы
3
rostonix,
sergodjan66

обратите внимание на инициативу, очень полезная фича, в идеале что бы проксирование работало не только в пределах целого домена, а по регулярке на отдельных его эндпоинтах, это умеет плагин FoxyProxy, о нем уже писали в этой теме теме, но в итоге реализовали просто белый/черный список, это как бы совсем не маршрутизация трафика, было бы полезно реализовать задумку, многие шаблоны получилось бы сделать более резко работающими которые не представляется возможным полностью на post|get переписать.
 
  • Спасибо
Реакции: Castaneda

material

Client
Регистрация
23.03.2021
Сообщения
337
Благодарностей
149
Баллы
43
Присоединяюсь к инициативе. Реализация конечно несколько сложная, думаю на это уйдет не мало времени, даже если и начать всё это делать, но по итогу функционал будет востребован. Тем более если неокрепшим умам объяснить возможности функционала в FAQ с примерами применения.
 
  • Спасибо
Реакции: Castaneda

Nick

Client
Регистрация
22.07.2014
Сообщения
1 987
Благодарностей
821
Баллы
113
Да, это очень актуальная штука
 

Asmus003

Client
Регистрация
25.03.2018
Сообщения
290
Благодарностей
67
Баллы
28
подкину юзкейс - есть продавцы прокси, которые блочат доступ к гугловским штуковинам. например, рекапча. можно было бы с помощью этой темы решить эту проблему? а то приходится еще больше прокси покупать под разные задачи...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 727
Баллы
113
подкину юзкейс - есть продавцы прокси, которые блочат доступ к гугловским штуковинам. например, рекапча. можно было бы с помощью этой темы решить эту проблему? а то приходится еще больше прокси покупать под разные задачи...
что решить то ? это тема предложений для разработчиков зенки...
эта тема не реализована в жизнь.
 

Castaneda

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

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

Предлагаю сделать метод:
C#:
public void SetProxy(
   string proxyString,
   bool useProxifier,
   bool emulateGeolocation,
   bool emulateTimezone,
   bool emulateWebrtc,

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

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

Поддерживаю идею
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 587
Благодарностей
3 401
Баллы
113
Есть исправленная таска по CEF, теперь должен работать --proxy-bypass-list.
Как решение подходит?
 
  • Спасибо
Реакции: Bas и udder

dimafatality

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

udder

Client
Регистрация
28.03.2017
Сообщения
633
Благодарностей
138
Баллы
43
Только для CEF или для хроминиума этот аргумент подходит?

--proxy-bypass-list="myip.ru" проверил. Установил прокси, при заходе на Myip.ru прокси не работает, это как и надо, но почему в мониторе трафика всеровно при запросе на myip.ru прокси отображается?
 
Последнее редактирование:
  • Спасибо
Реакции: Yuriy Zymlex

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 587
Благодарностей
3 401
Баллы
113
  • Спасибо
Реакции: lbvf65 и udder

flexyt2017

Client
Регистрация
02.11.2018
Сообщения
8
Благодарностей
1
Баллы
3
Поддерживаю, очень не хватает такой функции. Пробовал при помощи плагина FoxyProxy, работает некорректно
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 376
Благодарностей
693
Баллы
113

Bas

Client
Регистрация
15.12.2013
Сообщения
636
Благодарностей
263
Баллы
63

Ven32

Client
Регистрация
17.12.2021
Сообщения
25
Благодарностей
0
Баллы
1
есть какое то решение на сегодняшний день?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 587
Благодарностей
3 401
Баллы
113
  • Спасибо
Реакции: Ven32

Ven32

Client
Регистрация
17.12.2021
Сообщения
25
Благодарностей
0
Баллы
1

henry88

Client
Регистрация
31.12.2018
Сообщения
78
Благодарностей
26
Баллы
18
да, решил пока через Proxifier
Proxifier предназначен для всего домена, хорошего решения нет, конечно, вы можете использовать --proxy-bypass-list="*.google.com"
, но это, похоже, работает только для старого движка, а не для нового.


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


В приведенном выше контенте используется функция перевода,
 
Последнее редактирование:

Ven32

Client
Регистрация
17.12.2021
Сообщения
25
Благодарностей
0
Баллы
1
вы можете использовать --proxy-bypass-list="*.google.com"
, но это, похоже, работает только для старого движка, а не для нового.
да, в новой версии не работает так

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

henry88

Client
Регистрация
31.12.2018
Сообщения
78
Благодарностей
26
Баллы
18
да, в новой версии не работает так

что вы дальше написали - нифига не понял)
Хорошо, давайте позволим ИИ объяснить это один раз. В конце концов, я не понимаю русский язык, и в переводе с китайского могут быть расхождения. Я проконсультировался с 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) (замена трафика)

---

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

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