@ 2014-04-05T20:07:59Z <?php
namespace ProxyChecker;
class ProxyChecker
{
private $proxyCheckUrl;
private $config = array(
'timeout' => 10,
'check' => array('get', 'post', 'cookie', 'referer', 'user_agent'),
);
public function __construct($proxyCheckUrl, array $config = array())
{
$this->proxyCheckUrl = $proxyCheckUrl;
$this->setConfig($config);
}
public function setConfig(array $config)
{
$this->config = array_merge($this->config, $config);
}
public function checkProxies(array $proxies)
{
$results = array();
foreach ($proxies as $proxy) {
try {
$results[$proxy] = $this->checkProxy($proxy);
} catch (\Exception $e) {
$results[$proxy]['error'] = $e->getMessage();
}
}
return $results;
}
public function checkProxy($proxy)
{
list($content, $info) = $this->getProxyContent($proxy);
return $this->checkProxyContent($content, $info);
}
private function getProxyContent($proxy)
{
@list($proxyIp, $proxyPassword, $proxyType) = explode(',', $proxy);
$ch = \curl_init();
$url = $this->proxyCheckUrl;
// check query
if (in_array('get', $this->config['check'])) {
$url .= '?q=query';
}
$options = array(
CURLOPT_URL => $url,
CURLOPT_PROXY => $proxyIp,
CURLOPT_HEADER => true,
CURLOPT_TIMEOUT => $this->config['timeout'],
CURLOPT_CONNECTTIMEOUT => $this->config['timeout'],
CURLOPT_RETURNTRANSFER => true
);
if (!empty($proxyPassword)) {
$options[CURLOPT_PROXYAUTH] = CURLAUTH_BASIC;
$options[CURLOPT_PROXYUSERPWD] = $proxyPassword;
}
// check post
if (in_array('post', $this->config['check'])) {
$options[CURLOPT_POST] = true;
$options[CURLOPT_POSTFIELDS] = array(
'r' => 'request'
);
}
// check cookie
if (in_array('cookie', $this->config['check'])) {
$options[CURLOPT_COOKIE] = 'c=cookie';
}
// check refderer
if (in_array('referer', $this->config['check'])) {
$options[CURLOPT_REFERER] = 'http://www.google.com';
}
// check user agent
if (in_array('user_agent', $this->config['check'])) {
$options[CURLOPT_USERAGENT] = 'Mozila/4.0';
}
if (!empty($proxyType)) {
if ('http' == $proxyType) {
$options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP;
} else if ('socks4' == $proxyType) {
$options[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS4;
} else if ('socks5' == $proxyType) {
$options[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5;
}
}
\curl_setopt_array($ch, $options);
$content = \curl_exec($ch);
$info = \curl_getinfo($ch);
return array($content, $info);
}
private function checkProxyContent($content, $info)
{
if (!$content) {
throw new \Exception('Empty content');
}
if (!strpos($content, 'check this string in proxy response content')) {
throw new \Exception('Wrong content');
}
if (200 !== $info['http_code']) {
throw new \Exception('Code invalid: ' . $info['http_code']);
}
$allowed = array();
$disallowed = array();
foreach ($this->config['check'] as $value) {
if (strpos($content, "allow_$value")) {
$allowed[] = $value;
} else {
$disallowed[] = $value;
}
}
// proxy level
$proxyLevel = '';
if (strpos($content, 'proxylevel_elite')) {
$proxyLevel = 'elite';
} elseif (strpos($content, 'proxylevel_anonymous')) {
$proxyLevel = 'anonymous';
} elseif (strpos($content, 'proxylevel_transparent')) {
$proxyLevel = 'transparent';
}
return array(
'allowed' => $allowed,
'disallowed' => $disallowed,
'proxy_level' => $proxyLevel,
'info' => $info
);
}
$pingUrl = 'http://yourdomain.com/ProxyChecker/ping.php';
$proxyChecker = new ProxyChecker($pingUrl);
$proxies = array(
'183.95.132.76:80',
'195.5.18.41:8118',
);
$results = $proxyChecker->checkProxies($proxies);
echo '<pre>';
var_export($results);
echo '</pre';
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 5.4.27 0.007 0.055 12.47 5.4.26 0.010 0.043 12.47 5.4.25 0.007 0.041 12.48 5.4.24 0.006 0.040 12.48 5.4.23 0.008 0.037 12.47 5.4.22 0.005 0.039 12.47 5.4.21 0.004 0.044 12.48 5.4.20 0.008 0.042 12.47 5.4.19 0.011 0.037 12.46 5.4.18 0.006 0.038 12.46 5.4.17 0.007 0.036 12.47 5.4.16 0.007 0.036 12.46 5.4.15 0.005 0.046 12.46 5.4.14 0.009 0.038 12.15 5.4.13 0.008 0.041 12.13 5.4.12 0.007 0.037 12.09 5.4.11 0.010 0.036 12.09 5.4.10 0.008 0.042 12.09 5.4.9 0.010 0.052 12.10 5.4.8 0.006 0.045 12.09 5.4.7 0.008 0.039 12.09 5.4.6 0.011 0.042 12.09 5.4.5 0.010 0.036 12.09 5.4.4 0.003 0.041 12.08 5.4.3 0.009 0.038 12.07 5.4.2 0.005 0.037 12.07 5.4.1 0.006 0.036 12.07 5.4.0 0.005 0.039 11.57 5.3.28 0.007 0.039 12.71 5.3.27 0.007 0.046 12.72 5.3.26 0.007 0.046 12.72 5.3.25 0.004 0.046 12.72 5.3.24 0.003 0.047 12.72 5.3.23 0.011 0.047 12.71 5.3.22 0.010 0.041 12.68 5.3.21 0.009 0.045 12.68 5.3.20 0.007 0.039 12.68 5.3.19 0.007 0.036 12.68 5.3.18 0.007 0.038 12.67 5.3.17 0.010 0.038 12.67 5.3.16 0.009 0.043 12.67 5.3.15 0.007 0.046 12.67 5.3.14 0.010 0.048 12.67 5.3.13 0.012 0.054 12.66 5.3.12 0.008 0.043 12.66 5.3.11 0.005 0.042 12.66 5.3.10 0.011 0.048 12.14 5.3.9 0.004 0.042 12.12 5.3.8 0.007 0.039 12.11 5.3.7 0.010 0.075 12.11 5.3.6 0.008 0.047 12.09 5.3.5 0.007 0.047 12.04 5.3.4 0.007 0.041 12.04 5.3.3 0.005 0.041 12.01 5.3.2 0.009 0.041 11.79 5.3.1 0.007 0.044 11.75 5.3.0 0.012 0.055 11.74
preferences:dark mode live preview
140.24 ms | 1394 KiB | 7 Q