2012-03-15 178 views
0

全部,從混淆JS文件中提取URL

我想提取所有在混淆的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); 
} 

我怎麼能在這一段代碼改進,使其正確提取所有網址嗎?這段代碼很好地與普通的JS文件一起工作。

回答

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

就像一個魅力!謝謝@凱文 – smokinguns 2012-03-15 19:02:02

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