#!/usr/bin/perl ###################################################################### +### # Proxyfinder 1.1 EN + # # + # # Finding proxies and optional pinging them. + # # + # # Arguments: + # # --progress-bar=[0|1] Showing progress bar. + # # --ping Pinging them. Default 0 + # # Output format: + # # --text || --cikti=0 Text output. Default. + # # --raw-text || --cikti=1 Raw text output (ip:port). + # # --xml || --cikti=2 XML output. + # # + # # Example: + # # ./proxyfinder.pl --raw-text --ping + # # + # # Proxyfinder 1.1 EN + # # Copyright (C) 2007 Onur Aslan <onuraslan@gmail.com> + # # + # # This program is free software: you can redistribute it and/or modify + # # it under the terms of the GNU General Public License as published by + # # the Free Software Foundation, either version 3 of the License, or + # # any later version. + # # + # # This program is distributed in the hope that it will be useful, + # # but WITHOUT ANY WARRANTY; without even the implied warranty of + # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # # GNU General Public License for more details. + # # + # # You should have received a copy of the GNU General Public License + # # along with this program. If not, see <http://www.gnu.org/licenses/> +. # ###################################################################### +### use strict; use HTML::TokeParser; use LWP::Simple; use Net::Ping; # Ayarlar my $ping_at = 0; # Proxyler bulunduktan sonra pinglensin mi? my $cikti = 0; # Cikti bicimi: # Text = 0 # Raw text (ip:port) = 1 # XML = 2 my $progress_bar = 1; # Progress bar olsun mu olmasin mi my $quiet = 0; # Herhangi bir cikti gosterilmeden calissin mi? # Bundan sonrasina karismaniza gerek yok my $proxyler; my $out; my $progress; local $| = 1; $progress_bar = 0 if !eval "require Term::ProgressBar;" || $quiet == 1 +; # Eger XML::Simple modulu bulunamazsa devam etmesi icin eval kullanild +i eval "use XML::Simple;"; sub proxybul { my $sayfa = "01"; my @raw_proxyler; my @raw_proxyler2; foreach (1..30) { my $url = "http://www.samair.ru/proxy/type-$sayfa.htm"; my $icerik = get ($url); # Eger bir sayfa acilamazsa digerine geciyor if (!$icerik) { $progress->update () if $progress_bar; next; } my $html = HTML::TokeParser->new (\$icerik) or die "File doesn't open: $!\n"; while (my $icerik = $html->get_tag ("td")) { my $text = $html->get_trimmed_text ("/td"); $text =~ s/: /:/; if ($text !~ /IP address/ && $text !~ /Anonymity level/ && $text !~ /Checked time/ && $text !~ /Country/) { push @raw_proxyler, $text; } } $sayfa++; $progress->update () if $progress_bar; } # Simdi proxyler cikariliyor print "\n" if $progress_bar && $ping_at; progressbar_yarat ("Pinging proxies", (($#raw_proxyler-1)/4)-1) if $ +ping_at; for (my $i = 0; $i < @raw_proxyler; $i = $i+4) { my $durum; my $ping_return; my $ping_duration; my ($proxy, $port) = $raw_proxyler[$i] =~ /(.*):(.*)/; if ($ping_at) { my $ping = Net::Ping->new (); $ping->hires (); ($ping_return, $ping_duration, $proxy) = $ping->ping ($proxy +, 2); if ($ping_return) { $durum = "Online"; $ping_duration = 1000 * $ping_duration; ($ping_duration) = $ping_duration =~ /([\d]*)\./; } else { $durum = "Offline"; $ping_duration = 0; } $ping->close; $progress->update () if $progress_bar; } else { $durum = "Didn't pinged"; $ping_duration = 0; } push @raw_proxyler2, { "ip" => $proxy, "port" => $port, "type" => $raw_proxyler[$i+1], "country" => $raw_proxyler[$i+3], "durum" => $durum, "ping" => $ping_duration, "checktime" => time } } $proxyler = { "complete_time" => time, "proxy" => [@raw_proxyler2] } +; } sub xml { $out = XMLout ($proxyler, KeyAttr => 'ip', XMLDecl => "<?xml version +='1.0'?>") } sub raw_text { foreach (@{$proxyler->{proxy}}) { print $_->{ip}, ":", $_->{port}, "\n"; } } sub text { print "IP\t\t\tPort\t\tCountry\t\tStatus\t\tPing\n"; foreach (@{$proxyler->{proxy}}) { print $_->{ip}, "\t\t", $_->{port}, "\t\t", $_->{ulke}, "\t\t", $_ +->{durum},, "\t\t", $_->{ping}, "\n"; } } sub conf_parse { $_ = join (" ", @ARGV); if (/--version/) { print "Proxyfinder 1.0\nCopyrigt 2007 Onur Aslan - Licensend und +er GPLv3\n"; exit 0; } $ping_at = 1 if /--ping/; $cikti = $1 if /--cikti=([0|1|2])/; $cikti = 0 if /--text/; $cikti = 1 if /--raw-text/; $cikti = 2 if /--xml/; $progress_bar = $1 if /--progress-bar([0|1])/; $quiet = 1 && $progress_bar = 0 if /-q/ || /--quiet/; } sub progressbar_yarat { if ($progress_bar) { $progress = Term::ProgressBar->new ({name => $_[0], count => $_[ +1], ETA => "linear"}); $progress->max_update_rate (1); } else { print $_[0]."\n"; } } sub goster { text if $cikti == 0; raw_text if $cikti == 1; xml if $cikti == 2; print $out if !$quiet; } conf_parse; progressbar_yarat "Getting proxies", 30; proxybul; goster; 0;

In reply to Proxyfinder by Onur

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.