@gurkin4 мне нужно полностью переделывать получение информации об айпи? Или можно только заменить это действие в определение ipv4 ipv6 айпи? Если фулл информацию, то будет ли это, возможно, влиять как то на результат анонимности проксей?
Не подставляется переменная в регулярку
-
Доброго времени суток! Нужно подставить в регулярку переменную с префиксом.
Так, без переменной, регулярка пашет:
var RegExp1 = /MY_PREFIX_[\s\S]+?:\s[\s\S]+)/
var Result = RegExp1.test(ConfigString)А так, с динамически заданным префиксом, уже нет:
var Prefix = VAR_MY_PREFIX
var RegExp1 = (new RegExp('/('+ Prefix +'[\s\S]+?:\s[\s\S]+)/'))
var Result = RegExp1.test(ConfigString)Пробовал и без скобок:
var RegExp1 = new RegExp('/('+ Prefix +'[\s\S]+?:\s[\s\S]+)/')
Не помогает.
Что я делаю не так? -
@pragmatik Вот пример:
var test='Вася'; var reg = new RegExp('\\s'+test,'i'); log(reg.test('Меня зовут Вася') );Если рег выражение создается через конструктор, то не надо оборачивать в /.../ т.к. там должна быть строка. И все спецсимволы в строке должны экранироваться \
-
@Pragmatik В следующий раз выкладывайте строку к которой применяете код тоже.
У меня BAS ругается на твою регулярку
MY_PREFIX_[\s\S]+?:\s[\s\S]+)Так как не экранирована закрывающая скобка вконце
MY_PREFIX_[\s\S]+?:\s[\s\S]+\)
var ConfigString = "1234123MY_PREFIX_фыва: фывафывафывафыва )" var RegExp1 = /MY_PREFIX_[\s\S]+?:\s[\s\S]+\)/ var Result = RegExp1.test(ConfigString) log(Result) //true
Если рег выражение создается через конструктор, то не надо оборачивать в /.../ т.к. там должна быть строка. И все спецсимволы в строке должны экранироваться \
Долго я печатал
:Dvar ConfigString = "1234123MY_PREFIX_фыва: фывафывафывафыва )" var Prefix = "MY_PREFIX_" var RegExp1 = new RegExp(Prefix+"[\\s\\S]\+\?:\\s[\\s\\S]+\\\)","g") var Result = RegExp1.test(ConfigString) log(Result) //true -
Да, все спецзнаки в переменной тоже должны быть экранированы.
-
@Pragmatik Регулярки всё таки странные, приведи пример данных к которым ты применяешь регулярку
-
@fox есть конфигурационный файл. В нём есть код, и есть комменты. У меня любая строка кода начинается с префикса, а любой коммент с решётки (#). Данный цикл работает в два этапа: первая регулярка отделяет код от комментов по преффиксу ( можно делать наоборот, исключать комменты по #, но думаю, удобнее так, в комменты тогда можно вообще что угодно вставлять безо всяких спецсимволов, главное, чтобы там преффикса не было ). А вторая регулярка уже берёт готовый код без преффикса. Данный цикл берёт из массива данных считанного построчно конфига все строки с кодом и формирует из них отдельный массив, чтобы работало быстрее. Далее по такому же принципу я нахожу по преффиксу нужный мне код в этом массиве и присваиваю нужным переменным. В итоге массив данных хранится в файле и считывается очень удобным образом. Удобнее базы данных, так как конфиги можно править в блокноте.
-
@fox пример строчек конфига:
#Настройки прокси:
VAR_AR_ACCOUNT_PROXY: http,185.232.168.40:9172,aAz6A7,FoP1fZ
#Имя аккаунта:
VAR_AR_ACCOUNT_NAME: David Miller
#Логин аккаунта:
VAR_AR_ACCOUNT_LOGIN: miller.david2015@yandex.ru
#Пароль аккаунта
VAR_AR_ACCOUNT_PASSWORD: K72+r/Q8iljkhz0r6B
#Accept-Language аккаунта
VAR_AR_ACCOUNT_LANGUAGE: ru-RU,ru;q=0.6,en-US,en;q=0.6
#User-Agent аккаунта
VAR_AR_ACCOUNT_USERAGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 YaBrowser/18.6.1.770 Yowser/2.5 Safari/537.36
И так далее... Ещё fibgerprint туда же запихнул и кучу логинов-паролей для разных сайтов, завязанных на этот профиль. -
@Pragmatik Прикольно, BAS работает по схожему принципу
:D
Я прибегаю к работе с файлами в отладочных версиях скрипта. Для быстрого теста необходимых узлов.
Но объявлять переменные в конфиге черевато, так как дальше по скрипту ты эти переменные используешь, возможны ошибки.
Хотя всё зависит от цели самого скрипта
-
@Pragmatik Или у тебя переменные уже объявлены, а значение из файла ищется по имени переменной?
-
@fox да в том-то и беда, что через eval невозможно объявить переменную чтобы она с нуля появилась в БАС. Я тупо считываю эти значения и через if подставляю нужной переменной нужное значение. Там же, в коде с if эти переменные впервые и появляются. Очень неудобно, если честно. Если бы был безопасный способ создать переменную через код, было бы круто, может ещё реализуют.
-
@pragmatik Храните свой конфиг в json в виде объекта и делов
-
@denis_krsk said in Не подставляется переменная в регулярку:
Храните свой конфиг в json в виде объекта и делов
Предлагаете преобразовать файл в json или же сам массив данных из файла для хранения в переменной?
Я о таком не задумывался потому, что у меня в конфиге fingerprint хранится, а он уже в формате json. Json в json наврятли можно пережать.
Впрочем, с такой идейкой можно и два файла сделать, один для конфигурации, второй для слепка браузера.
-
@pragmatik Если уж вы выбрали такой подход к хранению данных, то json самое правильное решение. JSON способ передачи объектов в виде строки. Потому вам некто не мешает создать сколько угодно сложный объект и хранить в нем все, в том числе и фингер принт.
например:var config={ name:'Ivan' commens:[ 'hi', 'way' ], finger:fingerprint } //Потом в json var json=JSON.stringify(config); //Затем его записываете в файл //А после чтения var json=JSON.parse(file); //А потом распарсиваете его свойства var name=json.name; var commens=json.commens; var finger=json.fingerprint;
