HandyCache форум

Главная категория => Новые предложения => Тема начата: ve51 от 07 Июнь 2014, 12:57:51



Название: Поддержка PAC-файлов
Отправлено: ve51 от 07 Июнь 2014, 12:57:51
Считаю актуальной проблему поддержки безусловными прокси PAC-файлов.


Название: Re: Поддержка PAC-файлов
Отправлено: LordMerlin от 09 Июнь 2014, 10:50:35
Да уж. Очень бы хотелось. Но это так, в качестве хотелки.


Название: Re: Поддержка PAC-файлов
Отправлено: Anymore от 16 Июнь 2014, 16:05:44
В HC нет возможности автоматического поиска рабочего прокси сервера, что собственно, препятствует с "поддержке РАС-файлов."


Название: Re: Поддержка PAC-файлов
Отправлено: LordMerlin от 17 Июнь 2014, 10:02:08
Так идея РАС файлов не в автоматическом поиске рабочих, а та же идеология условных прокси, только список условий загружается из внешнего файла и все.


Название: Re: Поддержка PAC-файлов
Отправлено: alex77 от 17 Июнь 2014, 12:05:21
Хотя бы решение с помощью расширения, если оно реализуемо


Название: Re: Поддержка PAC-файлов
Отправлено: Anymore от 17 Июнь 2014, 13:46:44
Так идея РАС файлов не в автоматическом поиске рабочих, а та же идеология условных прокси, только список условий загружается из внешнего файла и все.

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

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


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

ЭЛЕМЕНТАРНО.


Название: Re: Поддержка PAC-файлов
Отправлено: Anymore от 17 Июнь 2014, 20:46:11
Как Вы однако заносчивы)) Я знаю что там java.
В общем то, всё от цели зависит. А у Вас она какая?


Название: Re: Поддержка PAC-файлов
Отправлено: LordMerlin от 18 Июнь 2014, 10:13:45
Да ну что вы. Просто слог у меня такой, менторский. С привычками сложно бороться. Простите если обидел.
У меня цель элементарная, подключить в НС вот этот лист
http://antizapret.prostovpn.ru/proxy.pac
Чтобы НС сам по нему ходил, а сейчас приходится скачивать его и править секцию заменяя DIRECT на 127.0.0.1:8080
Но это не то. Хочется же и по этим сайтам ходить через НС.


Название: Re: Поддержка PAC-файлов
Отправлено: mai62 от 18 Июнь 2014, 16:27:37
Можно сделать расширение, которое пропарсит этот pac-файл, выберет IP-адреса из него и будет направлять нужные запросы через прокси.
Использовать функцию hc.get_host_IP() и переменную hc.use_proxy.
Даже можно сделать чтобы расширение периодически само скачивало pac-файл и парсило его.


Название: Re: Поддержка PAC-файлов
Отправлено: LordMerlin от 18 Июнь 2014, 16:42:36
Золотые слова.
На большее не рассчитываем.


Название: Re: Поддержка PAC-файлов
Отправлено: mai62 от 18 Июнь 2014, 19:04:17
Я не пишу на lua, поэтому расширение написать для меня тоже требует усилий. Вот насобирал по строчке из разных расширений, получилось что-то.
Расширение умеет парсить файл proxy.pac (файл надо скачать и положить рядом с расширением) с целью сбора списка IP. Когда встретит запрос на IP из списка, направит его через прокси.


Название: Re: Поддержка PAC-файлов
Отправлено: alex77 от 19 Июнь 2014, 01:23:30
Можно сделать расширение, которое пропарсит этот pac-файл, выберет IP-адреса из него и будет направлять нужные запросы через прокси.
Использовать функцию hc.get_host_IP() и переменную hc.use_proxy.
Даже можно сделать чтобы расширение периодически само скачивало pac-файл и парсило его.
именно это нам и надо. Большего и не требуется


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

АП.
Попробовал. Что-то не работает.


Название: Re: Поддержка PAC-файлов
Отправлено: YuS от 19 Июнь 2014, 10:24:06
АП.
Попробовал. Что-то не работает.
Что именно не работает?
pac-файл надо бы показать и кроме того, прокси, если я правильно понял, должен быть внесен в само расширение... сейчас там присутствует:
proxy.antizapret.prostovpn.org:3128


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

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


Название: Re: Поддержка PAC-файлов
Отправлено: YuS от 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/
Если недоступен, то увы... надо просто вписать рабочий прокси.


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

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


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

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


Название: Re: Поддержка PAC-файлов
Отправлено: LordMerlin от 19 Июнь 2014, 13:12:06
В том то и дело, у вас отдается реальный адрес ресурса, который и находится в списке, потому и срабатывает. А мне отдается адрес заглушки, потому и не срабатывает.
Добавлено: 19 Июнь 2014, 13:11:26

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


Название: Re: Поддержка PAC-файлов
Отправлено: YuS от 19 Июнь 2014, 13:13:19
Видимо где-то что-то с ДНС, мне отдается адрес ресурса, который не соответствует списку.
"ping nnm-club.me" - какой IP высвечивает?


Название: Re: Поддержка PAC-файлов
Отправлено: mai62 от 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.


Название: Re: Поддержка PAC-файлов
Отправлено: YuS от 19 Июнь 2014, 13:20:16
Измените функцию header_send на такую
Так ведь там и так именно эта функция или есть разные версии плагина?


Название: Re: Поддержка PAC-файлов
Отправлено: mai62 от 19 Июнь 2014, 13:31:01
В этой я одну строку добавил для вывода в лог URL и IP. Восьмая строка сверху.


Название: Re: Поддержка PAC-файлов
Отправлено: LordMerlin от 19 Июнь 2014, 17:08:42
nslookup:
Name:    nnm-club.me
Addresses:  46.246.41.63, 213.5.69.179

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

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

Забыл сказать. Сейчас и на прямую открывается. Видимо адрес сменили. До обеда был точно другой 186.2.161.82, это заглушка Ростелекома.


Название: Re: Поддержка PAC-файлов
Отправлено: ve51 от 02 Ноябрь 2016, 14:45:15
Не могу понять почему перестало работать расширение.
Это общая проблема или только моя?


Название: Re: Поддержка PAC-файлов
Отправлено: nickston от 03 Декабрь 2016, 21:29:32
Проблема общая.
немного подправил.
список грузиться при запуске расширения
(для обновления списка, качаем .pac кидаем в папку, перегружаем расширение)


Название: Re: Поддержка PAC-файлов
Отправлено: ggman от 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.


Название: Re: Поддержка PAC-файлов
Отправлено: nickston от 28 Февраль 2017, 09:36:36
Пробуйте


Название: Re: Поддержка PAC-файлов
Отправлено: ggman от 28 Февраль 2017, 22:46:03
Пробуйте
большое спасибо! теперь работает как надо :good:


Название: Re: Поддержка PAC-файлов
Отправлено: ggman от 04 Март 2017, 20:08:20
еще давно заметил, что на последних версиях handycache почему-то перестали выводиться в монитор сообщения об использовании прокси (iplist2proxy); вместо этого в столбце "правила" пустота, хотя при использовании лога и по факту видно, когда идет через прокси. одна из последних версий, где нормально работал вывод в монитор, 1.0.0.470. реально ли и это пофиксить?


Название: Re: Поддержка PAC-файлов
Отправлено: nickston от 05 Март 2017, 21:18:53
как и споследней ситуацией (с портом) это изменнения внутри хк, и проблема не вывода это проблема в хк а не в расширении.