从混淆的JS文件中提取URLS

时间:2012-03-15 17:37:53

标签: perl obfuscation

全部,

我正在尝试提取混淆的JS文件中提到的所有URL。到目前为止,脚本只提取一个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 个答案:

答案 0 :(得分:1)

试试这个。正则表达式末尾的/g允许它在连续的调用中从匹配跳转到匹配,跟踪它在字符串中的位置。请参阅Perl RegExpt教程“perldoc perlretut”中的“全局匹配”。

我在($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);
            }
 }

答案 1 :(得分:0)

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);
  }
}