使用php的curl类,检测socket5代理服务器可用性
来源:互联网 发布:js文件压缩 编辑:程序博客网 时间:2024/06/06 06:54
设计初衷当然是用php curl bind不一个sokcet5去访问一个随机页面(公网)这个页面的功能就是通过一个md5来验证sokcet5服务器是否真的可用
A服务器通过 socket5发出http://xxxx/a.php?t=randkey
B服务器,echo md5($_GET['t'] . mykey);
第二个文件
目标服务器的那个程序。。。
verify 函数返回的true false标志socket5服务器是否可用!
curl_setopt($this->ch,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5); 这行话,是专门给socket5用的你要验证http proxy的也一样,删了这行就行了!
A服务器通过 socket5发出http://xxxx/a.php?t=randkey
B服务器,echo md5($_GET['t'] . mykey);
A服务器拿到content以后也用相同算法算一个$resut看看是不是等于B服务器的echo值,如果一样,就是success 不一样就是failed
第一个文件curl.inc.php
<?phpclass CurlRequest {private $ch = 0;/** * Init curl session * * $params = array('url' => "", * 'host' => "", * 'header' => "", * 'method' => "", * 'referer' => "", * 'cookie' => "", * 'post_fields' => "", * ['login' => '',] * ['password' => '',] * 'timeout' => 0 * ); */public function init($params) {if ($this->ch == 0)$this->ch = curl_init();$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';$header = array("Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5","Accept-Language: ru-ru,ru;q=0.7,en-us;q=0.5,en;q=0.3","Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7","Keep-Alive: 300");if (isset($params['host']) && $params['host'])$header[] = "Host: " . $params['host'];if (isset($params['header']) && $params['header'])$header[] = $params['header'];@curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);@curl_setopt($this->ch, CURLOPT_VERBOSE, 1);@curl_setopt($this->ch, CURLOPT_HEADER, 1);if (strlen($params['proxy']) > 0)curl_setopt($this->ch, CURLOPT_PROXY, $params['proxy']);if (strlen($params['proxyport']) > 0)curl_setopt($this->ch, CURLOPT_PROXYPORT, $params['proxyprot']);curl_setopt($this->ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);if ($params['method'] == "HEAD")@curl_setopt($this->ch, CURLOPT_NOBODY, 1);@curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);@curl_setopt($this->ch, CURLOPT_HTTPHEADER, $header);if ($params['referer'])@curl_setopt($this->ch, CURLOPT_REFERER, $params['referer']);@curl_setopt($this->ch, CURLOPT_USERAGENT, $user_agent);if ($params['cookie'])@curl_setopt($this->ch, CURLOPT_COOKIE, $params['cookie']);if ($params['method'] == "POST") {curl_setopt($this->ch, CURLOPT_POST, true);curl_setopt($this->ch, CURLOPT_POSTFIELDS, $params['post_fields']);}@curl_setopt($this->ch, CURLOPT_URL, $params['url']);@curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);@curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);if (isset($params['login']) & isset($params['password']))@curl_setopt($this->ch, CURLOPT_USERPWD, $params['login'] . ':' . $params['password']);@curl_setopt($this->ch, CURLOPT_TIMEOUT, $params['timeout']);}/** * Make curl request * * @return array 'header','body','curl_error','http_code','last_url' */public function exec() {$response = curl_exec($this->ch);$error = curl_error($this->ch);$result = array('header' => "",'body' => "",'curl_error' => "",'http_code' => "",'last_url' => "");if ($error != "") {$result['curl_error'] = $error;return $result;}$header_size = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE);$result['header'] = $this->pass_header(substr($response, 0, $header_size));$result['body'] = substr($response, $header_size);$result['http_code'] = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);$result['last_url'] = curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL);$result['last_sent'] = curl_getinfo($this->ch, CURLINFO_HEADER_OUT);return $result;}function __destruct() {@curl_close($this->ch);}public function pass_header($header) {$result = array();$varHader = explode("\r\n", $header);if (count($varHader) > 0) {for ($i = 0; $i < count($varHader); $i++) {$varresult = explode(":", $varHader[$i]);if (is_array($varresult) && isset($varresult[1]))$result[$varresult[0]] = $varresult[1];}}return $result;}}?>
第二个文件
<?phpinclude 'curl.inc.php';$GLOBALS['curl'] = new CurlRequest;function verify($proxy, $prot) {$key = rand('1000000', '9999999');$params = array('url' => "http://xxxxx.com/a.php?md=$key", //自己找个服务器放个程序!'host' => 'help.dhgate.com','proxy' => "$proxy:$prot",'proxyport' => "$prot",'timeout' => 10);$GLOBALS['curl']->init($params);$result = $GLOBALS['curl']->exec();if (trim($result['body']) == md5($key . 'my'))return true;elsereturn false;}echo verify('localhost', '7777');?>
目标服务器的那个程序。。。
<?phpecho md5($_GET['md'] . 'my');?>
verify 函数返回的true false标志socket5服务器是否可用!
curl_setopt($this->ch,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5); 这行话,是专门给socket5用的你要验证http proxy的也一样,删了这行就行了!
0 0
- 使用php的curl类,检测socket5代理服务器可用性
- 类的可用性设备检测
- nc批量检测代理服务器端口可用性
- php curl如何使用以及如何使用代理服务器
- Java实现Socket5代理服务器
- 使用PHP CURL库通过代理服务器连接外部网络
- PHP的cURL使用
- php curl 的使用
- php curl的使用
- 使用CURL库访问代理服务器
- php curl的配置使用
- 转发的 php curl 使用
- 使用PHP的cURL库
- php curl的简单使用
- php中curl的使用
- php中curl的使用
- 【PHP开发】curl的使用
- php之curl的使用
- AndroidManifest.xml文件解析
- CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦
- Android 获取信号强度
- STL deque的构造函数(2)
- Android:判断当前网络是WIFI还是手机网络
- 使用php的curl类,检测socket5代理服务器可用性
- Spoj 2713 Can you answer these queries IV 水线段树
- linux sort 命令详解
- QML学习笔记 创建页面表示方法
- VS2013中使用Git建立源代码管理
- 验证码实现
- C++ primer 第五版 中文版 练习 9.45 个人code 及疑问
- jsfl将库项目分别输出swf
- fastbit 基于bitmap的索引,看着很牛X的样子,先记录