Извлечение URL-адресов из запутанного файла JS - PullRequest
0 голосов
/ 15 марта 2012

Все,

Я пытаюсь извлечь все URL-адреса, упомянутые в обфусцированном файле JS.Пока что скрипт извлекает только один URL.Все URL-адреса содержатся в одной строке из-за запутывания.Вот фрагмент кода, который я использую для извлечения URL:

  while( my $line = <$info>) {
            chomp ($line); #removing the unwanted new line character
            my ($uri)= $line =~ /$RE{URI}{HTTP}{-scheme=>'https?'}{-keep}/  ;
            $uri=~s/[,\']//g;
            print "$uri\n" if ($uri);
 }

Как я могу улучшить этот фрагмент кода, чтобы он правильно извлекал все URL-адреса?Этот фрагмент кода прекрасно работает с обычными файлами JS.

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Попробуй это./g в конце регулярного выражения позволяет ему переходить от совпадения к совпадению в последовательных вызовах, отслеживая его положение в строке по мере продвижения.См. «Глобальное соответствие» в «perldoc perlretut», Учебное пособие по Perl RegExpt.

Скобка, которую я добавил около ($re), фиксирует результат соответствия и присваивает его $1.Смотрите также «Извлечение совпадений» в «perldoc perlretut»;

while( my $line = <DATA>) {
            chomp ($line); #removing the unwanted new line character
            my $re = $RE{URI}{HTTP}{-scheme=>'https?'}{-keep};
            while ( $line =~ /($re)/g ){
                my $uri = $1;
                $uri=~s/[,\']//g;
                print "$uri\n" if ($uri);
            }
 }
0 голосов
/ 15 марта 2012
while( my $line = <$info>) {
  chomp ($line); #removing the unwanted new line character
  my @uris = $line =~ /($RE{URI}{HTTP}{-scheme=>'https?'}{-keep})/g;
  foreach my $uri (@uris) {
    $uri=~s/[,\']//g;
    print "$uri\n" if ($uri);
  }
}
...