HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

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

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

Proxy exporter
  #1  
Старый 08.05.2006, 23:37
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию Proxy exporter

Недавно мне понадобилось много проксей, я знал несколько сайтов, с бесплатными прохи, но они были на разных страницах, в разных таблицах и по несколько шт. И я написал скрипт для их выдерания и группировки который и выкладываю. В нём занесено только 3 сайта, но экспортирует он около 1100 (не повторяющихся) проксей из них примерно 35 "high anonymity", конечно можно добавить сайты, если мало. Он их просто достаёт из таблиц но не проверяет, это можно сделать другими прогами.
ProxyExporter.pl:
PHP код:
#!/usr/bin/perl
use IO::Socket;
use 
IO::Select;
$log="Info about pages\n";
@
begins=('<tr bgcolor="#ffffff" class="text" height=10>','<tr bgcolor="white">','bgcolor="#e3e6ea"'); # Ночало каждой строки в таблице
@xlist1=(1,2,3,4,5,1,2,3,4,5,6,7,8,9,1,2,3,4,5); # Возможные номера страниц от номера запроса
@xlist2=(0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2); # Номер сайта от номера запроса из следущего масива
@xsites=('www.proxy4free.com','www.proxz.com','www.publicproxyservers.com'); # Сайты
@xpages=(('page','.html'),('proxz','.php'),('page','.html')); # Пары(шаблоны) страниц
$sel=IO::Select->new;
for(
$n=0;$n<@xlist1;$n++){
  
$fh=&conect($n);
  
$sel->add($fh);
  
$sitetype{$fh}=$n;
  print
"New conect ($n)\n";
}
while(@
ready=$sel->can_read){foreach$fh(@ready){
  
$ret=sysread$fh,$Request,256;
  if(
defined$cb{$fh}){
    
$cb{$fh}.=$Request;
  }else{
    
$cb{$fh}=$Request;
  }
  if(!
$ret){
    print
"$xsites[$xlist2[$sitetype{$fh}]]($xlist1[$sitetype{$fh}]):\n";
    
$begin=$begins[$xlist2[$sitetype{$fh}]];
    
$count=0;
    while(
$cb{$fh}=~/$begin/ig){
      (
$xip)=$'=~/>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</;
      ($xport)=$'
=~/>(\d{2,4})</;($xflag)=$'=~/>([^<>]{4,})</;
      $proxys{"$xip:$xport"}=$xflag;
      print"$xip:$xport\n";
      $count++;
    }
    $log.="$xsites[$xlist2[$sitetype{$fh}]]($xlist1[$sitetype{$fh}])=$count\n";
    undef$cb{$fh};
    $sel->remove($fh);
    close$fh;
  }
}}
print"End\n$log";
open(HOUT,">HighProxy.txt");open(EOUT,">ElseProxy.txt"); # HighProxy.txt, ElseProxy.txt - Результаты
while(($proxy,$flag)=each%proxys){
  if($flag=~/high anonymity/i){print HOUT"$proxy\n";}else{print EOUT"$proxy\n";}
}
close(EOUT);close(HOUT);
sub conect{local($num)=@_;
  $page=$xlist2[$num]*2;$page=$xpages[$page].$xlist1[$num].$xpages[$page+1];
  $server=$xsites[$xlist2[$num]];
  TRY:{
    $s=IO::Socket::INET->new(PeerAddr=>$server,PeerPort=>80);
    if($s){
      print $s "GET \/$page HTTP/1.1\nHost: $server\nAccept: */*\nUser-Agent: Internet Explorer 6.0\nConnection: Keep-Alive\n\n";
      return$s;
    }
  }
  return 0;

 
Ответить с цитированием

  #2  
Старый 12.05.2006, 00:09
jagga_man
Новичок
Регистрация: 31.03.2006
Сообщений: 5
Провел на форуме:
18298

Репутация: 0
Thumbs up

Возможно тебя заинтересует реализация этой же идеи грабера проксей под Никсы на перле.

PHP код:
#!/usr/bin/perl -w

# Declare modules
use LWP::Simple;
use 
HTML::TableExtract;

# Local Variables
my $url_file   "url.list";
my $proxy_file "proxy.list";


open URL,  "<$url_file";
while (<
URL>) {
foreach (
$_) {
print 
"[+] Downloading raw proxy list: $_";
@
html_string get("$_");
}
foreach 
$html_string (@html_string) {
&
parse_data($html_string);
}
}
close URL;

sub parse_data {
open OUT,  ">>$proxy_file";
(
$html_string) = @_;
print 
"[+] Parsing data...\n";
$te = new HTML::TableExtractheaders => [qw(Name Port)] );
$te->parse($html_string);
foreach 
$row ($te->rows($table)) {
 
my ($addr$port) = @$row;
 
$addr =~ s/\s+//g;
 
$port =~ s/\s+//g;
 
if ($port =~ /\d+/) {
 print 
OUT "$addr:$port\n";
 }
close OUT;
#$table = "null";

 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как поставить proxy scream PHP 11 21.10.2006 21:21
Проблема с установкой proxy Utochka Уязвимости 3 09.05.2006 01:03
Proxy List Filter 4.0.1 Macroeject Анонимность 2 20.02.2006 17:55



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ