提取http://cn-proxy.com/提供的代理服务器,然后尝试连接一下检查是否可用。 需要使用sockets模块。 刷东西什么的,最好用了。 无 ?phpinclude 'simple_html_dom.php';//ini_set('default_socket_timeout', 2);$url = 'http://cn-proxy.com/';$html = file_g
提取http://cn-proxy.com/提供的代理服务器,然后尝试连接一下检查是否可用。
需要使用sockets模块。
刷东西什么的,最好用了。 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) 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);}