ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

06.04.2009, 19:35
|
|
Новичок
Регистрация: 07.07.2008
Сообщений: 6
Провел на форуме: 315057
Репутация:
10
|
|
Парсит ссылки с гугла по кейворду
PHP код:
<?php
/*
|
| www.google.ru parser
| C0d3d by Exgibichi
| 27/07/08
|
*/
set_time_limit(0);
$n = 20; // number of pages
$keyword = 'keyword'; //keyword for parse
function googlelinkparse($keyword,$n) {
$keyword = str_replace(' ','+',$keyword);
$url = 'http://www.google.ru/search?q='.$keyword.'&num=100&filter=0&start='.$n.'0';
$file = file_get_contents($url) or die('Could not access file');
$exp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if (preg_match_all("/$exp/siU", $file, $matches, PREG_SET_ORDER)) {
$c = count($matches);
for ($i=0; $i<$c; $i++) {
if (strstr($matches[$i][2],'http://') && !strstr($matches[$i][2],'google') && !strstr($matches[$i][2],'search?q=cache') && !strstr($matches[$i][2],'youtube') && !strstr($matches[$i][2],'/aclk?sa')) {
$links[] = $matches[$i][2];
}
}
} return $links;
}
for ($i=0; $i<$n; $i++) {
$link = googlelinkparse($keyword,$i);
$c = count($link);
for ($j=0; $j<$c; $j++) {
$f = fopen('links.txt','a+'); fputs($f,$link[$j]."\r\n"); fclose($f);
}
sleep(10);
}
?>
|
|
|

07.04.2009, 06:46
|
|
Новичок
Регистрация: 19.11.2008
Сообщений: 10
Провел на форуме: 123389
Репутация:
6
|
|
Exgibichi
Add remove duplicate in links.txt and parse empty string 
|
|
|

09.04.2009, 12:49
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
Ребят, поделитесь, у кого есть, скриптом для сбора ников с форумов vBulletin 3.8.2
|
|
|

09.04.2009, 14:38
|
|
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
Провел на форуме: 2075230
Репутация:
462
|
|
vBulletin nickname grabber
Код:
#!/usr/bin/perl
use LWP::UserAgent;
system('cls');
print qq(
==============================
# vBulletin nickname grabber #
# coded by ph1l1ster #
# icq: 612672 #
==============================\n\n\n
);
print qq(
Enter adress:
e.g. - http://forum.site.ru/
> );
$adr=<STDIN>;
chomp($adr);
print qq(
Enter numbers of page:
e.g. - 294
> );
$page=<STDIN>;
chomp($page);
open (A, ">>nicknames.txt");
$count = 1;
while ($count <= $page) {
$url=$adr."memberlist.php?do=getall&order=asc&sort=username&page=".$count ++;
$client = LWP::UserAgent->new( ) or die;
$answer = $client->get($url);
@nicknames=$answer->content =~ /<a href=\"member.*?u=.*\">(.*)<\/a>/g;
print A join "\n", @nicknames;}
|
|
|

09.04.2009, 14:54
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
ph1l1ster, спасибо, пошел тестить!
|
|
|

09.04.2009, 18:01
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
Чтот не выходит ничего, может у кого есть на php ник-парсер для форумов булки! Хелп!
|
|
|

09.04.2009, 18:22
|
|
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
Провел на форуме: 2075230
Репутация:
462
|
|
Сообщение от mff
Чтот не выходит ничего, может у кого есть на php ник-парсер для форумов булки! Хелп!
стучи в аську :\
|
|
|

10.04.2009, 01:56
|
|
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме: 5866479
Репутация:
1809
|
|
ph1l1ster, спасибо большое, всё работает как часы! 
|
|
|
Perl.Многопоточность.Большие обьемы. |

12.04.2009, 18:49
|
|
Познающий
Регистрация: 29.03.2009
Сообщений: 87
Провел на форуме: 2185909
Репутация:
308
|
|
Perl.Многопоточность.Большие обьемы.
Код:
use POSIX ":sys_wait_h";
use IO::Handle;
# Количество процессов и кол-во задач на процесс
my $max_proc = 30;
my $max_per_proc = 30;
# Записываем строку запуска скрипта. Ниже будет видно зачем это.
my $exe = $0;
# Нихт зомби
$SIG{CHLD} = sub { while ((my $pid = waitpid(-1, WNOHANG)) > 0) {} };
# Создаём пайпы для обмена данными родитель-чайлд и чайлд-ридер, снимаем буферизацию
pipe(PARENT_RDR, CHILD_WTR);
pipe(CHILD_RDR, PARENT_WTR);
CHILD_WTR->autoflush(1);
PARENT_WTR->autoflush(1);
# Записываем PID главного процесса, форкаем процесс-ридер
my $master_pid = $$;
my $reader_pid = fork();
die "Can't fork: $!" unless defined($reader_pid);
# Пошёл основной процесс.
if($reader_pid){
open(F, $ARGV[0]) or die "Can't open file: $!\n";
my %children;
while(<F>){
chomp;
s/\r//;
my $line = $_;
$line = sprintf("%-128s", $line);
syswrite(CHILD_WTR,$line,128);
# Читаем из файла и пишем в пайп точное количество данных.
# Это необходимо для того, чтобы задания правильно читались чайлдами.
# Если использовать простые print/<>/read/write то чайлды будут читать огрызки заданий.
# см. ниже =)
$0 = "$exe";
# Проверяем количество чайлдов и добавляем их, если нужно, до $max_proc
while(checkChildren(\%children) < $max_proc){
my $pid = fork();
die "Can't fork: $!" unless defined($pid);
if ($pid){
$children{$pid} = 1;
} else {
close(CHILD_RDR);
close(CHILD_WTR);
# Вот собссно и сам чайлд
processChild();
exit;
}
}
}
# Файл кончился. Теперь пишем в пайп сигнал о выходе для всех чайлдов.
while(checkChildren(\%children)){
syswrite(CHILD_WTR,sprintf("%-128s", 'EXIT'),128);
}
# Убиваем ридера.
kill(2,$reader_pid);
close(F);
}else{
# Здесь происходит запуск ридера
close(PARENT_RDR);
close(PARENT_WTR);
readerProcess();
exit;
}
sub processChild
{
# см. ещё чуть ниже =)
$0 = "$exe - CHILD";
my $work = $max_per_proc;
while($work){
my $bytes = sysread(PARENT_RDR, my $line, 128);
$line=~s/.*?\x00//;
$line=~s/\s+?$//;
$line=~s/\s+//g;
exit if $line eq 'EXIT';
next unless $line;
# Получили задание. Оно будет гарантированно целым за счёт sysread/syswrite
# Ну вот и добрались до странной конструкции =)
# С её помощью при просмотре списка процессов мы увидим какой процесс чем занимается.
# На работу системы не влияет, но категорически удобно =)
$0 = "$exe - CHILD - $line";
my $result;
# Здесь обрабатываем нашу задачу и пишем в пайп ридеру
# ...
# ...
$result = sprintf("%-128s", $result);
syswrite(PARENT_WTR,$result,128);
$0 = "$exe - CHILD";
# ну это, думаю, понятно =)
$work--;
}
}
sub readerProcess
{
# Это процесс ридера
$SIG{INT} = sub {
exit;
};
open(F,">result.txt");
select F;
$|=1;
my $count;
my $work = 1;
# Читаем данные из пайпа, пишем в файл
while($work){
$count++;
# Ридер рассказывает скока он уже обработал
$0 = "$exe - READER - reading... ".$count;
my $bytes = sysread(CHILD_RDR, my $data, 128);
$data=~s/.*?\x00//;
$data=~s/\s+?$//;
$data=~s/\s+//g;
last if $data eq 'EXIT';
# Пишем
print F "$data\n";
# Можно проверить не сдох ли родительский процесс.
# Если вдруг он загнулся (а такое может случиться), то выйти.
last unless kill(0, $master_pid);
}
close(F);
}
sub checkChildren
{
my $hash = shift;
for my $pid(keys %{$hash}){
if(!kill(0, $pid)){
delete ${$hash}{$pid};
}
}
return scalar keys %{$hash};
}
Варианты распараллеливания:
1.На каждую задачу выделяется один процесс. Вариант хорош тем, что каждое задание изолировано в отдельном процессе - не будет проблем с утечкой памяти и прочими заморочками (особенно когда юзаются сторонние модули).
2.Родить необходимое количество процессов и выдавать им задания.
3.Оптимальный вариант- принцип работы Апача. Основной процесс запускает заданное количество дочерних. Каждый дочерний выполняет установленное количество задач и умирает.
|
|
|

14.04.2009, 01:39
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
Сижу в маил агенте ищу девушку... лазию по мирам и просто бесит когда тебе пишут мол доступ ограничен.... вот теперь доступ не ограничен! хехе
Код:
<html>
<head>
<title>Мой мир@Mail.ru - Доступ не ограничен</title>
</head>
<body>
<form onsubmit="show_big_image(linkz.value);return false;">
Ссылка на фотку, которую хочешь посмотреть:<br><input type=text id=linkz style='width:100%'>
</form>
<img src='' alt="тут будет фотка" id=srcimg>
<script language="javascript">
function show_big_image(str)
{
//----------------------------------------------------------------------
// (c)oded by Gar|k - достало меня видеть этот доступ ограничен гргргр
//
// exp link: http://my.mail.ru/mail/gar.i.k/photo/52.html?mode=
//----------------------------------------------------------------------
var re=/http\:\/\/(?:.*)\/(.*\/.*)\/.*\/(.*?).html(?:.*)/;
srcimg.src=str.replace(re,"http://content.foto.my.mail.ru/$1/_myphoto/i-$2.jpg");
}
</script>
</body>
</html>
Если лень копипастить заходи сюда
Последний раз редактировалось Gar|k; 14.04.2009 в 02:07..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|