+  HandyCache форум
|-+  Главная категория» Новые предложения» Поддержка PAC-файлов
Имя пользователя:
Пароль:
Страниц: 1 2 [Все]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Поддержка PAC-файлов  (Прочитано 14043 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ve51
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 15


« : 07 Июнь 2014, 12:57:51 »

Считаю актуальной проблему поддержки безусловными прокси PAC-файлов.
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #1 : 09 Июнь 2014, 10:50:35 »

Да уж. Очень бы хотелось. Но это так, в качестве хотелки.
Сообщить модератору   Записан
Anymore
Beta tester
*****

Репутация: +17/-0
Offline Offline

Сообщений: 334


« Ответ #2 : 16 Июнь 2014, 16:05:44 »

В HC нет возможности автоматического поиска рабочего прокси сервера, что собственно, препятствует с "поддержке РАС-файлов."
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #3 : 17 Июнь 2014, 10:02:08 »

Так идея РАС файлов не в автоматическом поиске рабочих, а та же идеология условных прокси, только список условий загружается из внешнего файла и все.
Сообщить модератору   Записан
alex77
Старожил
****

Репутация: +11/-1
Offline Offline

Сообщений: 454



« Ответ #4 : 17 Июнь 2014, 12:05:21 »

Хотя бы решение с помощью расширения, если оно реализуемо
Сообщить модератору   Записан
Anymore
Beta tester
*****

Репутация: +17/-0
Offline Offline

Сообщений: 334


« Ответ #5 : 17 Июнь 2014, 13:46:44 »

Так идея РАС файлов не в автоматическом поиске рабочих, а та же идеология условных прокси, только список условий загружается из внешнего файла и все.

простейший pac файл может выглядеть так
Код:
function FindProxyForURL(url, host) {
return "PROXY proxy.example.com:8080; DIRECT";
}

Если proxy.example.com будет не доступен, подключаться напрямую без прокси. Большинство готовых pac используют эту возможность. Как обыграть такое в HC, пусть даже расширениями, лично я не представляю.
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #6 : 17 Июнь 2014, 18:15:47 »

Все намного проще. И вы заблуждаетесь в механизме работы. Мы же тут не говорим чтобы работало так, как в браузерах, потому что в таких РАС файлах Ява конструкции используются. Разговор про парсинг и использование динамических списков.
А тут уже все проще.
Если адрес ресурса совпадает с одним из перечисленных после
function FindProxyForURL(url, host) {
то работаем через
proxy.example.com:8080
иначе
DIRECT

ЭЛЕМЕНТАРНО.
Сообщить модератору   Записан
Anymore
Beta tester
*****

Репутация: +17/-0
Offline Offline

Сообщений: 334


« Ответ #7 : 17 Июнь 2014, 20:46:11 »

Как Вы однако заносчивы)) Я знаю что там java.
В общем то, всё от цели зависит. А у Вас она какая?
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #8 : 18 Июнь 2014, 10:13:45 »

Да ну что вы. Просто слог у меня такой, менторский. С привычками сложно бороться. Простите если обидел.
У меня цель элементарная, подключить в НС вот этот лист
http://antizapret.prostovpn.ru/proxy.pac
Чтобы НС сам по нему ходил, а сейчас приходится скачивать его и править секцию заменяя DIRECT на 127.0.0.1:8080
Но это не то. Хочется же и по этим сайтам ходить через НС.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #9 : 18 Июнь 2014, 16:27:37 »

Можно сделать расширение, которое пропарсит этот pac-файл, выберет IP-адреса из него и будет направлять нужные запросы через прокси.
Использовать функцию hc.get_host_IP() и переменную hc.use_proxy.
Даже можно сделать чтобы расширение периодически само скачивало pac-файл и парсило его.
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #10 : 18 Июнь 2014, 16:42:36 »

Золотые слова.
На большее не рассчитываем.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #11 : 18 Июнь 2014, 19:04:17 »

Я не пишу на lua, поэтому расширение написать для меня тоже требует усилий. Вот насобирал по строчке из разных расширений, получилось что-то.
Расширение умеет парсить файл proxy.pac (файл надо скачать и положить рядом с расширением) с целью сбора списка IP. Когда встретит запрос на IP из списка, направит его через прокси.

* IPlist2proxy.lua (1.58 Кб - загружено 71 раз.)
Сообщить модератору   Записан
alex77
Старожил
****

Репутация: +11/-1
Offline Offline

Сообщений: 454



« Ответ #12 : 19 Июнь 2014, 01:23:30 »

Можно сделать расширение, которое пропарсит этот pac-файл, выберет IP-адреса из него и будет направлять нужные запросы через прокси.
Использовать функцию hc.get_host_IP() и переменную hc.use_proxy.
Даже можно сделать чтобы расширение периодически само скачивало pac-файл и парсило его.
именно это нам и надо. Большего и не требуется
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #13 : 19 Июнь 2014, 09:14:50 »

Я не пишу на lua, поэтому расширение написать для меня тоже требует усилий. Вот насобирал по строчке из разных расширений, получилось что-то.
Расширение умеет парсить файл proxy.pac (файл надо скачать и положить рядом с расширением) с целью сбора списка IP. Когда встретит запрос на IP из списка, направит его через прокси.
СПАСИБО ОГРОМНОЕ. Пошел тестить.

АП.
Попробовал. Что-то не работает.
« Последнее редактирование: 19 Июнь 2014, 09:37:09 от LordMerlin » Сообщить модератору   Записан
YuS
Ветеран
*****

Репутация: +27/-3
Offline Offline

Сообщений: 641


crazy


« Ответ #14 : 19 Июнь 2014, 10:24:06 »

АП.
Попробовал. Что-то не работает.
Что именно не работает?
pac-файл надо бы показать и кроме того, прокси, если я правильно понял, должен быть внесен в само расширение... сейчас там присутствует:
proxy.antizapret.prostovpn.org:3128
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #15 : 19 Июнь 2014, 12:44:29 »

По порядку. Скамал отсюда файлик http://antizapret.prostovpn.ru/proxy.pac положил рядом с расширением, подключил в НС, для верности нажал перечитать расширение. Почистил кэш ДНС в НС и в ситеме. Открываю ННМ-Клаб смотрю на блок.

Если просто РАС файл использовать в браузере то треккер открывается.
« Последнее редактирование: 19 Июнь 2014, 12:52:40 от LordMerlin » Сообщить модератору   Записан
YuS
Ветеран
*****

Репутация: +27/-3
Offline Offline

Сообщений: 641


crazy


« Ответ #16 : 19 Июнь 2014, 12:55:07 »

По порядку. Скамал отсюда файлик http://antizapret.prostovpn.ru/proxy.pac положил рядом с расширением, подключил в НС, для верности нажал перечитать расширение. Почистил кэш ДНС в НС и в ситеме. Открываю ННМ-Клаб смотрю на блок.

Если просто РАС файл использовать в браузере то треккер открывается.

Что-то не так выполнено, ибо:
Код:
19.06.2014/14:52:13 local/127.0.0.1 http://nnm-club.me/ 18518 18518/397 100% 387 "200 OK gzip" IPlist2proxy, З.1, CM:9 hits
IPlist2proxy
З.1 (Запись в кэш): .* 
CM:9 hits

А это без плагина:
Код:
19.06.2014/14:57:31 local/127.0.0.1 http://nnm-club.me/ 18518 18518/385 100% 419 "200 OK gzip" З.1, CM:9 hits
З.1 (Запись в кэш): .* 
CM:9 hits

Проверьте в браузере:
http://proxy.antizapret.prostovpn.org:3128/
Если недоступен, то увы... надо просто вписать рабочий прокси.
« Последнее редактирование: 19 Июнь 2014, 13:04:24 от YuS » Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #17 : 19 Июнь 2014, 13:06:52 »

Та я понимаю. Дело в том, что само расширение не срабатывает. Нет записи IPlist2proxy в логе.
Видимо где-то что-то с ДНС, мне отдается адрес ресурса, который не соответствует списку.
Добавлено: 19 Июнь 2014, 13:02:40

Проверьте в браузере:
http://proxy.antizapret.prostovpn.org:3128/
Если недоступен, то увы... надо просто вписать рабочий прокси.
Выше уже писал, просто с файлом все работает.
Сообщить модератору   Записан
YuS
Ветеран
*****

Репутация: +27/-3
Offline Offline

Сообщений: 641


crazy


« Ответ #18 : 19 Июнь 2014, 13:10:06 »

Та я понимаю. Дело в том, что само расширение не срабатывает. Нет записи IPlist2proxy в логе
Так ведь, я привел, как раз, строку из монитора HC, которая говорит о том, что всё работает. Хоть у меня и без прокси открывается этот сайт...
Добавлено: 19-06-2014, 15:07:57

Выше уже писал, просто с файлом все работает.
Что значит "просто с файлом"?
Скачиваю пак-файл по указанному выше адресу, помещаю его рядом с плагином, запускаю - всё работает.
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #19 : 19 Июнь 2014, 13:12:06 »

В том то и дело, у вас отдается реальный адрес ресурса, который и находится в списке, потому и срабатывает. А мне отдается адрес заглушки, потому и не срабатывает.
Добавлено: 19 Июнь 2014, 13:11:26

Что значит "просто с файлом"?
Значит в настройках браузера его подключаю, без НС.
Сообщить модератору   Записан
YuS
Ветеран
*****

Репутация: +27/-3
Offline Offline

Сообщений: 641


crazy


« Ответ #20 : 19 Июнь 2014, 13:13:19 »

Видимо где-то что-то с ДНС, мне отдается адрес ресурса, который не соответствует списку.
"ping nnm-club.me" - какой IP высвечивает?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #21 : 19 Июнь 2014, 13:15:30 »

Расширение пишет в логе НС сколько оно IP-адресов нашло в файле:
1869  адресов в списке
У Вас сколько?
Измените функцию header_send на такую
Код:
function header_send()
local al= hc.get_global('IPList2proxy')
if #al<1 then return end
  local Host = re.find(hc.request_header, [[^Host: *\K[^\r\n]+]])
--  hc.put_to_log('Host-'..Host)
if not Host then return end
local IP= hc.get_host_IP(Host)
  hc.put_to_log('url-'..hc.url..'   IP-'..IP)
if not IP then return end
  local i
  for i=1, #al do
    if al[i]==IP then
   hc.use_proxy= 'proxy.antizapret.prostovpn.org:3128';
      hc.monitor_string = hc.monitor_string .. ', IPlist2proxy'
   return
    end
  end
end
В лог НС будет выводиться URL и IP, проверьте есть ли IP в файле.
У меня с раcширением и свежим pac-файлом указанный сайт открывается. Со вчерашним pac-файлом не открывался, в нем не было нужного IP.
Сообщить модератору   Записан
YuS
Ветеран
*****

Репутация: +27/-3
Offline Offline

Сообщений: 641


crazy


« Ответ #22 : 19 Июнь 2014, 13:20:16 »

Измените функцию header_send на такую
Так ведь там и так именно эта функция или есть разные версии плагина?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #23 : 19 Июнь 2014, 13:31:01 »

В этой я одну строку добавил для вывода в лог URL и IP. Восьмая строка сверху.
Сообщить модератору   Записан
LordMerlin
Старожил
****

Репутация: +11/-8
Offline Offline

Сообщений: 456


« Ответ #24 : 19 Июнь 2014, 17:08:42 »

nslookup:
Name:    nnm-club.me
Addresses:  46.246.41.63, 213.5.69.179

Цитировать
У Вас сколько?
1873  адресов в списке

Ни один не совпадает.
Потому и не работает.
Спасибо за расширение, дальше мои проблемы.

Забыл сказать. Сейчас и на прямую открывается. Видимо адрес сменили. До обеда был точно другой 186.2.161.82, это заглушка Ростелекома.
« Последнее редактирование: 19 Июнь 2014, 17:18:08 от LordMerlin » Сообщить модератору   Записан
ve51
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 15


« Ответ #25 : 02 Ноябрь 2016, 14:45:15 »

Не могу понять почему перестало работать расширение.
Это общая проблема или только моя?
Сообщить модератору   Записан
nickston
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 70


« Ответ #26 : 03 Декабрь 2016, 21:29:32 »

Проблема общая.
немного подправил.
список грузиться при запуске расширения
(для обновления списка, качаем .pac кидаем в папку, перегружаем расширение)

* IPlist2proxy.lua (2.34 Кб - загружено 41 раз.)
« Последнее редактирование: 03 Декабрь 2016, 21:34:10 от nickston » Сообщить модератору   Записан
ggman
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #27 : 27 Февраль 2017, 23:34:45 »

привет, спасибо разработчику и всем, кто поддерживает проект.
к сожалению, я "ни бум-бум" в регулярных выражениях, поэтому прошу помощи тут.

во всех версиях IPlist2proxy найдена одна и та же проблема при работе с последними версиями Mozilla Firefox/Google Chrome:
расширение некорректно определяет адрес хоста при использовании https (в виде 'домен:443' вместо 'домен'), в результате чего следующая функция не может из-за неверного dns-запроса определить его IP и направить через прокси:(
причем независимо от версии HC, на старом FF 19.0.2 все работает прекрасно (пока не обновишь первый раз до версии 43)!

в логе запись:
Код:
27.02.17 22:07:18,543 # 266 -=< MESSAGE FROM EXTENSION >=- C:\HandyCache\Extensions\IPlist2proxy.lua
Host-example.сom:443
соответственно, при использовании последних версий FF/Chrome появилась эта приставка :443, которая и отправляется в качестве параметра днс-серверу (видно также в wireshark'е).

подозреваю, копать надо в 55й строке:
Код:
local Host = re.find(hc.request_header, [[^Host: *\K[^\r\n]+]])
что бы там заменить, дабы не прибавляло :443 к адресу хоста? желательно универсальное

p.s. вместо example.сom - любой домен, имя и/или IP которого присутствует в скачиваемом PAC, который должен идти через прокси.
надеюсь, не будет советов "используй другой браузер", ибо их много. Заметил, что еще работает в IE, а также на Ios в safari.
« Последнее редактирование: 27 Февраль 2017, 23:41:43 от ggman » Сообщить модератору   Записан
nickston
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 70


« Ответ #28 : 28 Февраль 2017, 09:36:36 »

Пробуйте

* IPlist2proxy.lua (2.39 Кб - загружено 37 раз.)
Сообщить модератору   Записан
ggman
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #29 : 28 Февраль 2017, 22:46:03 »

Пробуйте
большое спасибо! теперь работает как надо Отлично!
Сообщить модератору   Записан
ggman
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #30 : 04 Март 2017, 20:08:20 »

еще давно заметил, что на последних версиях handycache почему-то перестали выводиться в монитор сообщения об использовании прокси (iplist2proxy); вместо этого в столбце "правила" пустота, хотя при использовании лога и по факту видно, когда идет через прокси. одна из последних версий, где нормально работал вывод в монитор, 1.0.0.470. реально ли и это пофиксить?
Сообщить модератору   Записан
nickston
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 70


« Ответ #31 : 05 Март 2017, 21:18:53 »

как и споследней ситуацией (с портом) это изменнения внутри хк, и проблема не вывода это проблема в хк а не в расширении.
Сообщить модератору   Записан
Страниц: 1 2 [Все]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: