| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- namespace Heanup\App\Script\Controller;
- use Heanup\App\Api\Package\Database\Proxy;
- use Heanup\App\Script\Controller;
- class Check extends Controller
- {
- protected function main()
- {
- $_status=1;
- while (true){
- $ips=Proxy::select([],['status'=>$_status]);
- $_status=1-$_status;
- foreach ($ips as $ip) {
- $status=$this->check_proxy_ip_info($ip['ip'].":".$ip['port']);
- if (!$status){
- echo sprintf("%s无效,已删除",$ip['ip'] ). PHP_EOL;
- Proxy::update(['status'=>0], ['id'=>$ip['id']]);
- }else{
- echo sprintf("%s:%s有效",$ip['ip'],$ip['port'] ). PHP_EOL;
- }
- }
- echo "休眠30s" . PHP_EOL;
- sleep(30);
- }
- }
- /**
- * +-----------------------------------------------------------------------------
- * 检查代理ip信息有效性
- * +-----------------------------------------------------------------------------
- * @param string $proxy_ip [117.95.100.126:8998]
- * @param int $times 执行检查次数
- * @return bool
- * @author elinx <654753115@qq.com> 2016-07-29
- * +-----------------------------------------------------------------------------
- */
- function check_proxy_ip_info($proxy_ip = '', $times = 1)
- {
- $status = false;
- $header = array(
- // "GET / HTTP/1.1",
- // "HOST: www.baidu.com",
- "accept: application/json",
- "accept-encoding: gzip, deflate",
- "accept-language: en-US,en;q=0.8",
- "content-type: application/json",
- "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
- );
- $url = 'http://www.baidu.com/';
- $result['succeed_times'] = 0; //成功次数
- $result['defeat_times'] = 0; //失败次数
- $result['total_spen'] = 0; //总用时
- $ip = explode(":", $proxy_ip);
- for ($i = 0; $i < $times; $i++) {
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url); //设置传输的url
- curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //发送http报头
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); // 解码压缩文件
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //不验证证SSL书
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //不验证SSL证书
- curl_setopt($curl, CURLOPT_HTTPHEADER, array(
- 'Client_Ip: ' . $ip,
- ));
- curl_setopt($curl, CURLOPT_HTTPHEADER, array(
- 'X-Forwarded-For: ' . $ip,
- ));
- curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
- curl_setopt($curl, CURLOPT_PROXY, $proxy_ip);
- curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
- curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
- curl_setopt($curl, CURLOPT_TIMEOUT, 10); // 设置超时限制防止死循环
- // $response_header = curl_getinfo($curl); // 获取返回response报头
- $content = curl_exec($curl);
- if (strstr($content, '百度一下,你就知道')) {
- $status = true;
- break;
- } else {
- $status = false;
- }
- // $result['list'][$i]['response_header'] = $response_header;
- }
- return $status;
- }
- }
|