C:\Perl\bin>perl scr/reg.pl Bareword found where operator expected at scr/reg.pl line 6, near "m/<A>(.+)<(ba ckslash)/A" Unquoted string "backslash" may clash with future reserved word at scr/reg.pl li ne 8. syntax error at scr/reg.pl line 6, near "m/<A>(.+)<(backslash)/A" Search pattern not terminated at scr/reg.pl line 8. А не легче экранировать? <\/DIV> Более ч0ткий пример (c) demonoid
вот так =) это если надо тереть линки. я просто немного переписал твой код. я хз че он должен делать =))
как понял начало нужно написат парсер выдирающий из страницы нужное нам значение. возбмём в пример яндэкс например нам нужно узнать значение id из этой строки (17 строка ответа) </script><table id=head><tr> итд ..... и отправить запрос с этим значением запрос скажем запрос будет http://www.yandex.ru/yandsearch?text=значение Code: use Socket; $host="www.yandex.ru"; $port="80"; socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); $iaddr = inet_aton($host); $paddr = sockaddr_in($port, $iaddr); connect(SOCK, $paddr); send (SOCK, "GET / HTTP/1.0\n\n", 0); @data=<SOCK>; # ответ сервера close(SOCK); $fullitself=@data[17]; # считаем в какой строке ответа нужное нам значение она 17тая @temp=split('table id=',$fullitself); # table id= это символы которые идут перед нашим значением @semp=split('>',@temp[1]); # > а этот символ после нашего значения $id = @semp[0]; # и так наше значение это переменная $id connect(SOCK, $paddr); send (SOCK, "GET /yandsearch?text=",$id," HTTP/1.0\n\n", 0); #отправляем запрос @data2=<SOCK>; close(SOCK); # извените если гденибуть ошибся, не проверял но вот если позиция строки постоянно меняется в ответе нужно будет ещё писать цикл который будет находить эту строку переберая каждую в этом массиве. но намного легче это будет реализовать в пхп так как там есть специальная функция которая исчет ключ по значению array_search(" значение", $массив);
Code: use Socket; $host="www.yandex.ru"; $port="80"; $NEED_STR = "<table id=__STRING__>"; #Строка поиска @parse_need = split("__STRING__",$NEED_STR); #print @parse_need[1]; socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); $iaddr = inet_aton($host); $paddr = sockaddr_in($port, $iaddr); connect(SOCK, $paddr); send (SOCK, "GET / HTTP/1.0\n\n", 0); @data=<SOCK>; close(SOCK); $size = @data; for ($i=0;$i<$size;$i++) { $fullitself=@data[$i]; @temp=split(@parse_need[0],$fullitself); @semp=split(@parse_need[1],@temp[1]); $id = @semp[0]; } if ($id) { print "\n\n[!] FOUND STRING: '$id'\n\n"; }else { print "\n\n[!] NOT FOUND\n\n"; } Вот кстати небольшой тюнинг твоего скриптенга: $NEED_STR = "<table id=__STRING__>"; Тут вводишь строку которую надо искать; __STRING__ Отмечено место, где будет выдран текст для вставки в $id
Ах ну да еще ты хотел поиск по яндексу =) Короче я сделал, чтобы выводил количество найденых результатов Вот полный скрипт: PHP: #!/usr/bin/perl use Socket; $host="www.yandex.ru"; $port="80"; $NEED_STR = "<table id=__STRING__>"; @parse_need = split("__STRING__",$NEED_STR); socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); $iaddr = inet_aton($host); $paddr = sockaddr_in($port, $iaddr); connect(SOCK, $paddr); send (SOCK, "GET / HTTP/1.0\n\n", 0); @data=<SOCK>; close(SOCK); $size = @data; for ($i=0;$i<$size;$i++) { $fullitself=@data[$i]; @temp=split(@parse_need[0],$fullitself); @semp=split(@parse_need[1],@temp[1]); $id = @semp[0]; } if ($id) { print "\n\n[!] FOUND STRING: '$id'\n\n"; }else { print "\n\n[!] NOT FOUND\n\n"; } socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); connect(SOCK, $paddr); $header = "GET /yandsearch?text=".$id." HTTP/1.0\r\n" ."User-Agent: Opera/10.84 (Windows NT 5.1; U; ru)\r\n" ."Host: www.yandex.ru\r\n" ."Referer: http://yandex.ru/\r\n" ."Proxy-Connection: close\r\n" ."Content-type: application/x-www-form-urlencoded\r\n\r\n"; send (SOCK, $header, 0); @data2=<SOCK>; close(SOCK); $size = @data2; for ($i=0;$i<$size;$i++) { $fullitself=@data2[$i]; $fullitself =~ s/(&.*?;)//egs; if ($fullitself =~m/<b>[0-9]/) { $fullitself =~/\b([0-9]+)/; $result = $1; } } if ($result) { print "\n\n[!] YANDEX FOUND '$result' PAGES WITH '$id'\n\n"; }else { print "\n\n[!] NOT FOUND\n\n"; } Резултат скрипта с текущим содержанием: