Xpath замена параметров в конфиге proxifier
-
@UA said in Xpath замена параметров в конфиге proxifier:
@Sevenup said in Xpath замена параметров в конфиге proxifier:
На данный момент считываю конфиг в переменную и пытаюсь применить к ней xpath(получить текст):
/ProxifierProfile[@version="101"]/ProxyList/Proxy[1]/Address/text()
но получаю Can't resolve query /ProxifierProfile[@version="101"]/ProxyList/Proxy[1]/Address/text()Если юзать "xpath(получить текст)", то хвосты вида "/text()" здесь лишние ;)
без /text() тоже не работает
-
@Sevenup, ещё и двойной слеш "//" в самом начале нужен :)
-
@Sevenup Ты дай пример файлов, как было и как надо в итоге. А то не совсем понятно, что и на что менять..
@UA Решил я значит перейти с любимых мной регулярок на Xpath.
На сайте в дереве dom-элементов текст с переносом строки:" Fox "
Если применять экшен Xpath получить текст, то получаешь пробел. Сработал Xpath получить xml
//div[@class="nickname"]/text()[2]
В логе получается идеально, но вот сохраняя в файл вижу:
Fox
И вот с этим мифическим элементом переноса строки
ни как не получается справиться..
trim() не помогает.Вернул регулярку в место Xpath, пока не придумаю как решить.
-
@Fox said in Xpath замена параметров в конфиге proxifier:
@Sevenup Ты дай пример файлов, как было и как надо в итоге. А то не совсем понятно, что и на что менять..
- берем строку нашего прокси socks5://login:pass@ip:port и раскладываем на части login, pass, ip, port
- берем конфиг проксифаера bas.ppx и в секции <Proxy id="100" type="SOCKS5"> меняем старые параметры на полученные из строки. Если в строке логина пароля нет (прокси без авторизации) то меняем параметры в секции <Proxy id="101" type="SOCKS4">
- в секции:
<Rule enabled="true">
<Name>New</Name>
<Applications>Worker.exe</Applications>
<Action type="Proxy">101</Action>
</Rule>
меняем через какой прокси(айди) 100 или 101 проксифаер будет проксировать наш процесс БАСа worker.exe - сохраняем конфиг
- выпоняем *.bat который рестартанет проксифаер с новым конфигом и потоки БАСа потекут через другой прокси
почти со всем разобрался, не получаются регулярки. В любом тестере или другом ПО работает, в БАСе нет, например регулярка (?<=@).*(?=:) что бы получить айпи.
-
@Sevenup said in Xpath замена параметров в конфиге proxifier:
почти со всем разобрался, не получаются регулярки. В любом тестере или другом ПО работает, в БАСе нет, например регулярка (?<=@).*(?=:) что бы получить айпи.
лови
(@?\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})
если сабака будет. берет ип вместе с ней
если ее нет, берет чистый ип
-
@Sevenup Можно сделать всё проще. Сейчас сделаю нормальный проект по замене Default.ppx и запуску без батников.
-
@Zenodrot said in Xpath замена параметров в конфиге proxifier:
@Sevenup said in Xpath замена параметров в конфиге proxifier:
почти со всем разобрался, не получаются регулярки. В любом тестере или другом ПО работает, в БАСе нет, например регулярка (?<=@).*(?=:) что бы получить айпи.
лови
(@?\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})
если сабака будет. берет ип вместе с ней
если ее нет, берет чистый иптак айпи же без собаки нужен :)
а почему моя не работает? она то во всех других ПО работает, в БАСе есть особенности с регулярками?UPD:
не работает эта регулярка :(
из строки socks5://login:1234@185.158.15.11:38849 выдает 1234@185.158
похоже засада с цифрами в пароле :)(?<=@)(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}) вот так, работает везде, кроме БАС, в нем ругается "SyntaxError: Invalid regular expression: unrecognized character after (? Номер строки:2 Во время выполнения скрипта". Я не силен в регулярках, но предполагаю что как-то иначе ему кормить их нужно, не?
-
@Sevenup Я уже почти закончил, по логике. Как выглядит строчка с проксей без логина и пароля?
-
@Fox said in Xpath замена параметров в конфиге proxifier:
@Sevenup Я уже почти закончил, по логике. Как выглядит строчка с проксей без логина и пароля?
без авторизации: socks5://ip:port
с авторизацией: socks5://login:pass@ip:portВот так работает вроде для получение айпи универсально: (\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})
остался порт и логин/пароль если они есть
-
@Sevenup Не парься ты так, у меня уже всё готово. Только меня из за компа выгнали
:D
. Вернусь, оформлю и закину сюда.Я вынес в отдельную переменную порядковый номер прокси и номер прокси для worker.exe. Чтобы можно было использовать в цикле.
-
ок, как пустят за ПК свисти :))))
я пока как-то вроде даже карточный домик выстроил, даже работает :) разбиваю строку через "регулярные выражения"->"разделить строку" в список(массив) из которого потом беру значения и меняю в конфиге.Осталось придумать как дождаться остановки всех потоков, не запуская новые, сменить прокси методом из данной темы и снова запустить потоки. Подобную темку я даже создавал уже Остановить все потоки, а потом снова запустить.
-
@Sevenup Я вернулся.
С самим проксифаером я не работал и как именно его хочешь применять не знаю. На один поток, или на два.. сколько прокси и когда менять.. По этому сделал шаблон.
Вынес порядковый номер прокси в переменную и порядковый номер прокси, который будет применяться к worker.exe. Да, ещё почему то BAS не работает с относительными ссылками вида %APPDATA%, а cmd в нём работает :)Вот Проект.
Сами прокси можно устанавливать из файла прикрутив ресурс.
-
@Fox
спасибо за участие! :)проксифаер необходим, что бы проксировать через службу ОС весь процесс запущенный в этой ОС, например часто его(проксифаер) используют чтобы проксировались плагины браузера, например флеш.
конечно в проксифаере есть возможность передавая PID процесса заставлять только конкретный процесс проксироваться через конкретный прокси, т.е. не по имени Worker.exe через профиль как я пытаюсь реализовать в этой теме. Таким образом можно 10 потоков(Worker.exe) и плагины которые каждый пораждает проксировать через разные прокси. Это очень здорово и удобно, в зенно такая реализация есть, но пришлось изрядно их закидать багрепортами что-бы довести эту функцию до ума. Вот теперь как-то перекатился на БАС, что-то мне в нем нравится :) может опенсорц :) но что бы в нем реализовать подобное проксирование по PID, нужен автор :) Ну или возможно кому-то больше экспириенса в кодинге.
Но данная тема о более простом и банальном способе. У проксифаера есть конфиг, в нем мы задаем, что все процессы с именем Worker.exe прокидывать через такой-то прокси. Запускаем БАС и понеслось, в проекте прокси можно не ставить, все потоки полетят через указанный прокси (проксифаер как бы перехватывает соединение). Этот конфиг из командной строки мы можем перезаливать проксифаеру по необходимости, таким способом меняя прокси. Пример: мы отработали нужные действия (порегали акки или кто чем там занимается), далее меняем конфиг(меняем прокси) и понеслась по новой уже с другим проксиком. Таким образом прыгая с проксика на проксик.
Попытался объяснить как можно проще.
P.S.
так вот, касательно потоков, прокси нужно сменить только тогда, когда все процессы(запросы) в потоках закончились, что бы одна и та же кука не светилась на сайте от разных прокси. Вот как это сделать, я пока думаю.
-
@Sevenup Для чего нужен proxifier я понял уже по названию.. Читал здесь темы, что флеш подключается на прямую минуя установленные прокси.
Просто с самой программой я не работал.
Можно завершить программу через экшен запустить процессtskill Proxifier
. Переписать Default.ppx с новым прокси и снова запустить..
Взять отдельный проект BAS для управления Proxifier, который поменяет прокси и сидит ждёт команды из базы\файла\запроса.. А рабочий проект отработав потоки посылает команду поменять прокси и запускает новую итерацию.
Проект то, работает?
-
@Fox said in Xpath замена параметров в конфиге proxifier:
@Sevenup Для чего нужен proxifier я понял уже по названию.. Читал здесь темы, что флеш подключается на прямую минуя установленные прокси.
Просто с самой программой я не работал.
Можно завершить программу через экшен запустить процессtskill Proxifier
. Переписать Default.ppx с новым прокси и снова запустить..
Взять отдельный проект BAS для управления Proxifier, который поменяет прокси и сидит ждёт команды из базы\файла\запроса.. А рабочий проект отработав потоки посылает команду поменять прокси и запускает новую итерацию.
Проект то, работает?
неее, как раз килять проксифаер не нужно, он все четко и так подхватывает, просто proxifier.exe config.ppx и все, если он уже запущен,он просто меняет конфиг.
можно просто делат то только в одном потоке,чекая THREAD_INDEX - это все не проблема. Как сделать так, что бы все потоки закончились, проверить что никакой никуда не обращается, после сменить прокси и запустить их снова? вот в чем засада.
Проект да, все меняет чики пики, как и писал выше, эксперементирую остановкой потоков БАСа :))
-
@Sevenup said in Xpath замена параметров в конфиге proxifier:
Как сделать так, что бы все потоки закончились, проверить что никакой никуда не обращается, после сменить прокси и запустить их снова? вот в чем засада.
Может такой вариант тебе подойдет, но не уверен)
действие Установить метку (Config) вызов функции config() //в ней колдуем над конфиг файлом вызов многопоточной функции tasks() // в нее описываем всю логику работы действие Перейти к метки (Config)
-
@santilo said in Xpath замена параметров в конфиге proxifier:
@Sevenup said in Xpath замена параметров в конфиге proxifier:
Как сделать так, что бы все потоки закончились, проверить что никакой никуда не обращается, после сменить прокси и запустить их снова? вот в чем засада.
Может такой вариант тебе подойдет, но не уверен)
действие Установить метку (Config) вызов функции config() //в ней колдуем над конфиг файлом вызов многопоточной функции tasks() // в нее описываем всю логику работы действие Перейти к метки (Config)
многопоточная функция tasks() запущена например в 10 потоков, каждый отрабатывает разное время. Переход к следующему действию произойдет только тогда, когда успешно закончатся все потоки многопоточной функции.
-
напишу пока тут, вдруг кто заметит, что бы тем множество не плодить :)
действие "запустить процесс", при выполнении например "C:\Progra~2\Proxifier\Proxifier.exe C:\Users\user\Desktop\bas\bas.ppx silent-load" и установленной галочке "ждать завершения" запуск залипает намертво, добавление "таймаут" не помогает. Залипает надолго, минут 15 ждал, потом рестартунул(не хватило терпения).
Если же галочку "ждать завершения" убрать, то скрипт переходит к следующему блоку, все ок, но остается запущенным окно командной строки выполняющей данный блок "запустить процесс".
Ту же строку из блока "запустить процесс" копипастю и выполняю в ручную в командной строке, все ок.