- <?php
- include 'simple_html_dom.php';
- //ini_set('default_socket_timeout', 2);
- $url = 'http://cn-proxy.com/';
- $html = file_get_html($url);
- $ret = $html->find('table.sortable tr');
- //echo 'count(ip):', count($ret), PHP_EOL;
- $ips = array();
- foreach($ret as $key => $value)
- {
- $tds = $value->find('td');
- if(count($tds) < 2)
- {
- continue;
- }
- $ip = $tds[0]->innertext;
- $port = $tds[1]->innertext;
- if(filter_var($ip, FILTER_VALIDATE_IP))
- {
- $ips[] = array('ip' => $ip, 'port' => $port);
- }
- }
- //var_dump($ips);
- echo '找到代理', count($ips), '个.', PHP_EOL;
- $validate = array();
- foreach($ips as $value)
- {
- if(checkProxy($value['ip'], $value['port']))
- {
- $validate[] = $value;
- }
- }
- echo '可用代理', count($validate), '个', PHP_EOL;
- foreach($validate as $value)
- {
- visit($value['ip'], $value['port'], 'http://www.actself.me/');
- }
- echo 'done.', date('Y-m-d H:i:s') , PHP_EOL;
- function checkProxy($ip, $port)
- {
- echo '验证 ', $ip, ":", $port, ' ', date('Y-m-d H:i:s');
- $fd = @stream_socket_client('tcp://' . $ip . ':' . $port, $errno, $errstr, 2);
- echo $fd !== false ? ' 可用' : ' 不可用';
- echo date('Y-m-d H:i:s'), PHP_EOL;
- if($fd !== false)
- {
- fclose($fd);
- return true;
- }
- /*
- $fd = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
- if($fd === false)
- {
- echo 'socket_create failed.', PHP_EOL;
- return false;
- }
- $ret = socket_connect($fd, $ip, $port);
- socket_close($fd);
- */
- return false;
- }
- function visit($ip, $port, $url)
- {
- $h = curl_init($url);
- //curl_setopt($h, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
- curl_setopt($h, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
- //curl_setopt($h, CURLOPT_PROXY, '127.0.0.1:1080');
- curl_setopt($h, CURLOPT_PROXY, $ip . ':' . $port);
- curl_setopt($h, CURLOPT_CONNECTTIMEOUT, 2);
- curl_setopt($h, CURLOPT_TIMEOUT, 6);
- curl_setopt($h, CURLOPT_RETURNTRANSFER, true);
- $ret = curl_exec($h);
- echo $ret === false ? 'curl exec failed.' : 'curl exec successed.';
- echo PHP_EOL;
- if($ret === false)
- {
- echo curl_error($h), PHP_EOL;
- }
- curl_close($h);
- }
- //该片段来自于http://www.codesnippet.cn/detail/1012201411223.html
来源: http://www.codesnippet.cn/detail/1012201411223.html