ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #741  
Старый 06.04.2009, 19:35
Exgibichi
Новичок
Регистрация: 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$matchesPREG_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);
}
?>
 

  #742  
Старый 07.04.2009, 06:46
kopele
Новичок
Регистрация: 19.11.2008
Сообщений: 10
Провел на форуме:
123389

Репутация: 6
По умолчанию

Exgibichi
Add remove duplicate in links.txt and parse empty string
 

  #743  
Старый 09.04.2009, 12:49
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


Отправить сообщение для mff с помощью ICQ
По умолчанию

Ребят, поделитесь, у кого есть, скриптом для сбора ников с форумов vBulletin 3.8.2
 

  #744  
Старый 09.04.2009, 14:38
ph1l1ster
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
Провел на форуме:
2075230

Репутация: 462
Отправить сообщение для ph1l1ster с помощью ICQ
По умолчанию

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

  #745  
Старый 09.04.2009, 14:54
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


Отправить сообщение для mff с помощью ICQ
По умолчанию

ph1l1ster, спасибо, пошел тестить!
 

  #746  
Старый 09.04.2009, 18:01
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


Отправить сообщение для mff с помощью ICQ
По умолчанию

Чтот не выходит ничего, может у кого есть на php ник-парсер для форумов булки! Хелп!
 

  #747  
Старый 09.04.2009, 18:22
ph1l1ster
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
Провел на форуме:
2075230

Репутация: 462
Отправить сообщение для ph1l1ster с помощью ICQ
По умолчанию

Цитата:
Сообщение от mff  
Чтот не выходит ничего, может у кого есть на php ник-парсер для форумов булки! Хелп!
стучи в аську :\
 

  #748  
Старый 10.04.2009, 01:56
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


Отправить сообщение для mff с помощью ICQ
По умолчанию

ph1l1ster, спасибо большое, всё работает как часы!
 

Perl.Многопоточность.Большие обьемы.
  #749  
Старый 12.04.2009, 18:49
[underwater]
Познающий
Регистрация: 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.Оптимальный вариант- принцип работы Апача. Основной процесс запускает заданное количество дочерних. Каждый дочерний выполняет установленное количество задач и умирает.
 

  #750  
Старый 14.04.2009, 01:39
Gar|k
Постоянный
Регистрация: 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)
 


Быстрый переход




ANTICHAT.XYZ