Как распарсить строку с юзер агентом?



  • Есть файл со строками, в котором сохранены
    Логин:Пароль:Прокси:Юзер Агент
    Соответственно, когда пытаюсь распарсить эту строку, то в переменную записывается только первая часть Юзера агента, тк он разделен (;)

    Пример:
    ЮА - Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
    Записывается только - Mozilla/5.0 (Windows NT 6.1

    Теперь вопрос: как распарсить эту строку, чтобы юзер агент записывался полностью



  • @prakash said in Как распарсить строку с юзер агентом?:

    Логин:Пароль:Прокси:Юзер Агент

    Самое простое регулярным выражением что-то вроде (\S+?):(\S+?):(Mozila[\s\S]+)



  • @usertrue said in

    Самое простое регулярным выражением что-то вроде (\S+?):(\S+?):(Mozila[\s\S]+)
    А если там не Mozila, а например Opera?



  • @prakash said in Как распарсить строку с юзер агентом?:

    @usertrue said in

    Самое простое регулярным выражением что-то вроде (\S+?):(\S+?):(Mozila[\s\S]+)
    А если там не Mozila, а например Opera?

    А нука найдите мне его xD



  • @usertrue Что найти? Опера ЮА? да ради бога))
    Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12 Version/12.16



  • @prakash said in Как распарсить строку с юзер агентом?:

    @usertrue Что найти? Опера ЮА? да ради бога))
    Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12 Version/12.16

    Обычно сначала Mozila идет, по историческим факторам. Но никто вам не мешает усовершенствовать мой пример



  • @usertrue said in Как распарсить строку с юзер агентом?:

    (\S+?):(\S+?):(Mozila[\s\S]+)

    Вот вариант с Opera
    (\S+?):(\S+?):((?:Mozila|Opera)[\s\S]+)



  • @prakash Просто сохраняете так [[LOGIN]]:[[PASS]]:"[[PROXY]]":"[[UA]]" и парсите инструментом "Парсить строку"



  • Или создайте базу, добавьте в нее столбцы Логин:Пароль:Прокси:Юзер Агент и получайте записи из базы, в таком случае регулярка не нужна, достаточно действия парсить строку



  • @prakash said in Как распарсить строку с юзер агентом?:

    Записывается только - Mozilla/5.0 (Windows NT 6.1

    Так записывается потому что действие Парсить строку видит разделитель ; и записывает всё, что после него в следующую переменную(если таковая указана).
    Для обхода этого существует 2 метода.

    1. Использовать разделитель, которого точно нет в ЮА. Например #. После этого использовать действие Парсить строку из раздела Список. Это чуть усложнит скрипт, т.к. на выходе будет не набор переменных, а список. Впрочем, к его элементам тоже можно обратиться в любом действии. Но красивых названий переменных уже не будет.
    2. Кодировать ЮА в base64 перед записью и раскодировать после парсинга.

Log in to reply