Скрипт - который пытается узнать версии phpBB форума. Он ищет файл CHANGELOG.html откуда теоретически можно прочитать версию установленного форума. Для упрощения, скрипт ищет в гугле по заданной ему строке и тестит полученные линки, поэтому было бы логично давать ему такие запросы, которые привели бы на форум (напр. "phpbb powered 2001" или "phpBB forum" и т.д. ). Как параметры скрипту надо строку, которую он искать будет (я когда тестировал, то искал по "phpbb powered 2001", результат интерестен ) и количество страниц google которые он будет обрабатывать (на каждой странице ~10 линков), можно также задать прокси. Приятного вершн хантинга PHP: #!/usr/bin/perl -w # phpBB Version Finder # This script looks for phpBB changelog.html file # and if such file was found, prints version of # installed forum. # It searches on google with given string and # checks all found links # 01.2006 by DetMyl, [email protected] if (@ARGV < 2) { print q( +++++++++++++++++++++++++++++++++++++++++++++++++++ Usage: perl Vercheck.pl [search str] [how much google pages to CHECK] [proxy (optional)] i.e. perl Vercheck.pl "Powered by phpBB" 2 127.0.0.1:3128 will test 20 links from sites containing "Powered by phpBB" ++++++++++++++++++++++++++++++++++++++++++++++++++++ ); exit; } use strict; use LWP::UserAgent; use Time::Local; my $timme=scalar(localtime()); my $search = $ARGV[0]; my $links = $ARGV[1]; my $proxy = $ARGV[2]; my $request; my $response; my $sstring; my $t_url; my $t_path; my $count = 0; my $browser = LWP::UserAgent->new (); $browser->agent('User-Agent: Opera/8.0 (Windows NT 5.1; U; en)'); if ( defined $proxy) { $proxy =~ s/(http:\/\/)//eg; $browser->proxy("http" , "http://$proxy"); } print ("\nSession started at $timme\n") ; if ($proxy) {print "Using proxy $proxy\n";} print "--------------------------------\n\n"; print "++ Searching for: $search\n"; for (my $i = 0; $i < $links; $i++) # po 10 zaprosov za raz... { my $foo = $i*10; print "\n~~Links $foo till ".($foo + 10)." ~~\n\n"; $request = "http://www.google.com"; $request .= "/search?q=$search&num=10&safe=off&start=$foo"; $response = $browser->get($request); die "Error: ", $response->status_line unless $response->is_success; #nahodim linky my $temp = $response->content; M1: while ($temp =~ /class=g><a class=l href="http:\/\/(.*)\/[\w\d\_\-\?\=\.\/\&\+\%]*"/gi) { $t_url=$1; $t_path="/"; print "--\n"; $request = "http://"; $request .= $t_url; $request .= $t_path; print "Testing $request: "; if (&test($request."docs/CHANGELOG.html")) {print "----\n\n"; next M1;} if (&test($request."CHANGELOG.html")) {print "----\n\n"; next M1;} print "Not found\n----\n\n"; } } sub test { my @browser_like_headers = ( 'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)', 'Accept-Language' => 'en', 'Accept' => "text/html, image/jpeg", ); $response = $browser->get(@_, @browser_like_headers); unless ($response->is_success) { return 0; } if ($response->content =~ m/<span class=\"maintitle\">phpBB 2.0.x CHANGELOG<\/span/i) { if ($response->content =~ m/<li><a href=\"[\#\d]*\">Changes since ([\d\.]*)<\/a><\/li>/i) { print (" version: $1 \n"); return 1; } return 0 } if ($response->content =~ m/<span class=\"maintitle\">phpBB ([\d\.]*) CHANGELOG<\/span/i) { print (" version: $1 \n"); return 1; } return 0; } П.С. Я не очень бы доверял файлу CHANGELOG.html ;-) Но надеюсь скрипт окажется полезен.
когда я писал такой же узнавальщик версий на php, из этого же файла CHANGELOG.html там ведь он имеет такой вид т.е. если последняя надпись 2.0.16 то стоит значит 2.0.17 Но когда я его написал, обнаружилось что на 1/20 сайтов присутствовал этот файл CHANGELOG.html, на остальных его не было, вот так вот
Ага, но я это обрабатываю в скрипте и выдаю нормальную версию 2 nul_access: Он может не пахать, если гугл немного ответ измени, поковыряйся в скрипте, там немного исправлять
Не на всех форумах есть файл changelog, даже если есть то не всегда ему можно верить... вот например мне недавно попался форум в ченджлоге написано было что последние обновление было версия 2.0.5)) На самом деле - 2.0.18 стоял.. Но молодец что старался и написал)