Perl脚本在一段时间后停止工作
我有一个Perl脚本,可以扫描多达400k行。它有时会停止,但没有任何错误消息。如何解决这个问题 这是我的代码,已编辑Perl脚本在一段时间后停止工作,perl,Perl,我有一个Perl脚本,可以扫描多达400k行。它有时会停止,但没有任何错误消息。如何解决这个问题 这是我的代码,已编辑 #!/usr/bin/perl # M-A_labz # Modules use HTTP::Request; use strict; use Win32::Console::ANSI; use warnings; use LWP::Simple; use Term::ANSIColor; if ( $^O =~ /Win/ ) { system("cls");
#!/usr/bin/perl
# M-A_labz
# Modules
use HTTP::Request;
use strict;
use Win32::Console::ANSI;
use warnings;
use LWP::Simple;
use Term::ANSIColor;
if ( $^O =~ /Win/ ) {
system("cls");
system("title Mass Scripts Grabber 0.1");
}
else {
system("clear");
}
$| = 1;
print color("red"), '
';
print color 'reset';
print color("yellow"), "\n\n[+] Enter List File Ips : ";
print color 'reset';
my $host = <STDIN>;
chomp($host);
open (SITE, "<$host") || die "[-] Can't open the List of site file !";
my @SITE = <SITE>;
close SITE;
foreach my $xp (@SITE) {
chomp $xp;
my $ip = $xp;
chomp ($ip);
my %group;
if ( $ip !~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ ) {
print color("bold white"), "# Skiping $ip\n";
print color 'reset';
}
my $page = 0;
print color("green"), "Working on $ip\n";
print color 'reset';
print color("bold white"), "[#] Begin Reserving !";
print color 'reset';
while (1) {
my $content = get("http://www.bing.com/search?q=ip:$ip&count=50&first=1&FORM=PERE")
or die("Error getting output\n");
my $status = keys %group;
while ( $content =~ /<cite>[:\/\/]*([\w\.\-]+)[\w+\/\.\-_:\?=]*<\/cite>/g ) {
$group{$1} = undef;
}
last if ( $status == keys %group );
$page = $page + 10;
}
print color("bold white"), "\n# OUTPUT for $ip\n";
print color 'reset';
open (IN,">reverse-$ip.txt");
foreach my $host (keys %group) {
print IN "$host\n";
}
close(IN);
open (F, "<reverse-$ip.txt")
|| die "[-] Can't open the List Of Domains Names!";
my @DOMAINS = <F>;
close F;
foreach my $D (@DOMAINS) {
chomp $D;
print color("bold white"), "[-] $D :[Unknown] \n";
print color 'reset';
}
}
#/usr/bin/perl
#M-A_labz
#模块
使用HTTP::请求;
严格使用;
使用Win32::Console::ANSI;
使用警告;
使用LWP::Simple;
使用术语:ANSIColor;
如果($^O=~/Win/){
系统(“cls”);
系统(“标题质量脚本抓取器0.1”);
}
否则{
系统(“清除”);
}
$| = 1;
打印颜色(“红色”),'
';
打印颜色“重置”;
打印颜色(“黄色”),“\n\n[+]输入列表文件Ips:”;
打印颜色“重置”;
我的$host=;
chomp($宿主);
open(SITE,问题可能是$page
变量的值不会影响任何内容,因此while
循环将继续无限期地获取相同的URL
也许您希望将first
参数设置为$page
我建议将URI模块与URI::QueryParam
一起使用,这将允许您单独操作URL的各个部分
我不是从互联网上获取URL,而是简单地打印它。你必须小心,你有一个可靠的测试,导致循环退出。你的owwn代码的问题是你没有这样的测试
如果这种行为在服务条款范围内,我也会非常惊讶。你的预编程停止的原因可能是Bing注意到来自你IP地址的大量相同自动请求并阻止了你。如果你坚持下去,你可能会发现自己陷入麻烦
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
use URI;
use URI::QueryParam;
my $url = URI->new('http://www.bing.com/search');
$url->query_param( count => 50 );
$url->query_param( FORM => 'PERE' );
my $ip = '127.0.0.1';
my $page = 1;
while () {
$url->query_param( q => $ip );
$url->query_param( first => $page );
say $url;
last if $page == 10;
++$page;
}
发布您的代码和数据示例。这是脚本,请检查我也有一些类似的脚本,但它们不使用bing.com。请将您的代码在线发布到堆栈溢出上,作为您问题的一部分。链接可能会过时。谢谢!我们需要更多信息…例如,屏幕上最后打印的内容是什么,发生了什么…脚本是否有效xit还是挂起?另外,也许在每个循环中保留一个计数并打印出计数,这样当它失败时,您就可以知道输入中的哪一行(如果它失败的话)失败了。@Bleron,代码样式很糟糕,很难读