PHP class to validate socks4 , sock5 , proxies using curl library


June 3rd, 2007 by paolo


Anonymity is one of my favourites’ interests :) (try ksb26) .

This simple PHP 5 class validates Socks4 , Socks5 and Proxy lists.


<?php

// PHP anonymity checker
//
//   (c) Involutive 2008 http://www.involutive.com
//   author: Paolo Ardoino < paolo@involutive.com >
//
//      Usage:
//              $anons = array(
//                      array("ip" => "1.2.3.4", "port" => 8080, "type" => "socks4"),
//                      array("ip" => "1.2.3.5", "port" => 8080, "type" => "socks5"),
//                      array("ip" => "1.2.3.6", "port" => 8080, "type" => "proxy")
//              );
//
//              $pa = new phpanon(array("anons" => $anons));
//              $pa->check();
//              $pa->done();
//
//              $anons is an array of triples ("ip" => ip, "port" => port, "type" => type)
//                      ip: ip address of the socks / proxy
//                      port: port of the socks / proxy
//                      type: socks5 (for socks5), socks4 (for socks4), proxy (for proxy)
//
//              Other options:
//                      "url" => "http://www.example.com" : connection test page
//                      "needle" => "someword" : some word contained in the page set by "url"
//                      "user_agent" => "Mozilla Firefox" : set an alternative user_agent
//                      "url_referer" => "http://www.mypage.com" : set a referer url

class phpanon {
    public $anons = array();
    public $opts = array("user_agent" => "", "url_referer" => "", "url" => "http://www.google.com", "needle" => "groups");

    function __construct($opts) {

        if(sizeof($opts["anons"]) > 0) {
            $this->anons = $opts["anons"];
        }

        if($opts["user_agent"] != "") {
            $this->opts["user_agent"] = $opts["user_agent"];
        }

        if($opts["url_referer"] != "") {
            $this->opts["url_referer"] = $opts["url_referer"];
        }

    }

    function check() {
        echo "PHP anonymity checker v0.2\n\t(c) 2007 Involutive http://www.involutive.com\n";
        echo "\tAuthor: Paolo Ardoino < paolo@involutive.com >\n";

        if(sizeof($this->anons) > 0) {
            for($i = 0, $cnt_good = 0, $cnt_gad = 0, $y = sizeof($this->anons); $i < $y; $i++) {
                $anon = &$this->anons[$i];
                if($anon["ip"] != "" && $anon["port"] != "" && $anon["type"]) {
                    echo "Checking ".$anon["ip"].":".$anon["port"]." [ type ".$anon["type"]." ] … ";
                    $ch = curl_init($this->opts["url"]);
                   
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt($ch, CURLOPT_HEADER, 0);
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
                    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
                    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
       
                    if($this->opts["user_agent"] != "") {
                        curl_setopt($ch, CURLOPT_USERAGENT, $this->opts["user_agent"]);
                    }
                    if($this->opts["url_referer"] != "") {
                        curl_setopt($ch, CURLOPT_REFERER, $this->opts["url_referer"]);
                    }
                   
                    curl_setopt($ch, CURLOPT_PROXY, $anon["ip"].":".$anon["port"]);
                    if($anon["type"] == "socks4") curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
                    else if($anon["type"] == "socks5") curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

                    $html = curl_exec($ch);
                    if(curl_errno($ch) || $html == "" || strpos($html, $this->opts["needle"]) === FALSE) {
                        $anon["status"] = 0;
                        $cnt_gad++;
                        echo "not working\n";
                    } else {
                        $anon["status"] = 1;
                        $cnt_good++;
                        echo "working\n";
                    }
                    curl_close ($ch);
                    unset($ch);
                }
                unset($anon);
            }
        }

        echo "Done.\n";
    }
}

?>
 

Download this code: php-anon-checker.txt

Author: Paolo Ardoino < paolo@involutive.com >

Posted in Anonymity, PHP |

del.icio.us - Digg it - Furl - Google - Netscape - StumbleUpon

2 Responses

  1. Labs @ Involutive offering free daily updated socks4 , socks5 , anonymous proxy lists | labs @ involutive Says:

    […] to analyze and validate huge lists socks4 , socks5 and anonyous proxies . It is based on this PHP 5 class, released some days ago, based on libcurl binding for networking connections. Our […]

  2. Mihalcea romeo Says:

    Any idea what is with this error:

    Notice: Use of undefined constant CURLPROXY_SOCKS4 - assumed ‘CURLPROXY_SOCKS4′

    I have the latest PHP version and curl 7.16.0

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.