本来让下面的小弟用PYthon写个
可惜小弟python基础太差了。于是乎自己百度了下资料 整合下其他编程经验于是乎
就出来了这个成品:
<?php $t1 = microtime(true); header('content-type:text/html;charset=utf-8'); ini_set("max_execution_time", 240); // s 40 分钟 function curlPost($url,$data,$method){ $cacert = getcwd() . '/cacert.pem'; //CA根证书 $ch = curl_init(); //1.初始化 curl_setopt($ch, CURLOPT_URL, $url); //2.请求地址 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);//3.请求方式 //4.参数如下 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA颁布的证书 curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布) curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');//模拟浏览器 curl_setopt($ch, CURLOPT_TIMEOUT, 20); // 设置超时限制防止死循环 //接收数据时超时设置,如果20秒内数据未接收完,直接退出 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//遵循的重定向次数 // 使用自动跳转 curl_setopt($ch, CURLOPT_AUTOREFERER, 1);//自动设置header中的Referer:信息 curl_setopt($ch, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));//gzip解压内容 curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); // curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 //设置代理 // $proxy_ip = "59.38.241.25"; // $proxy_port = "23916"; // $proxy = $proxy_ip.":".$proxy_port; // curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); // curl_setopt($ch, CURLOPT_PROXY, $proxy); //设置代理2 // curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理认证模式 // curl_setopt($ch, CURLOPT_PROXY, "$arrip[0]"); //代理服务器地址 // curl_setopt($ch, CURLOPT_PROXYPORT,$arrip[1]); //代理服务器端口 if($method=="POST"){//5.post方式的时候添加数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); } if($method=="GET"){//get方式 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); } $tmpInfo = curl_exec($ch);//6.执行 if (curl_errno($ch)) {//7.如果出错 return curl_error($ch); } curl_close($ch);//8.关闭 return $tmpInfo; } /*检测ip有效*/ function GetHttpStatusCode($proxy){ $curl = curl_init(); curl_setopt ($curl, CURLOPT_PROXY, $proxy);//使用代理访问 curl_setopt($curl,CURLOPT_URL,"http://www.baidu.com");//获取内容url curl_setopt($curl,CURLOPT_HEADER,1);//获取http头信息 curl_setopt($curl,CURLOPT_NOBODY,1);//不返回html的body信息 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//返回数据流,不直接输出 curl_setopt($curl,CURLOPT_TIMEOUT,30); //超时时长,单位秒 curl_exec($curl); $rtn= curl_getinfo($curl,CURLINFO_HTTP_CODE); curl_close($curl); return $rtn; //$proxy="175.42.123.178:9999"; //代理格式 //if(GetHttpStatusCode($proxy)==200){ //echo $proxy.">>>>>代理可用"; //}else{ //echo $proxy.">>>>>代理已失效"; //} } /*封装返回json数据*/ function jsonReturn($code = 200,$msg='',$data = null) { $Result['code'] = $code; $Result['msg'] = $msg ? $msg : ''; //$Result['msg'] = iconv('GB2312', 'UTF-8', $Result['msg'] ); $Result['msg'] = mb_convert_encoding($msg,'UTF-8','UTF-8'); // $Result['msg']= json_decode( $Result['msg']); if($data !== null) $Result['data'] = $data; if(($Result = json_encode($Result,JSON_UNESCAPED_UNICODE)) === false){ switch(json_last_error()){ case JSON_ERROR_NONE: exit('JSON_ERROR_NONE'); case JSON_ERROR_DEPTH: exit('JSON_ERROR_DEPTH'); case JSON_ERROR_STATE_MISMATCH: exit('JSON_ERROR_STATE_MISMATCH'); case JSON_ERROR_CTRL_CHAR: exit('JSON_ERROR_CTRL_CHAR'); case JSON_ERROR_SYNTAX: exit('JSON_ERROR_SYNTAX'); case JSON_ERROR_UTF8: exit('JSON_ERROR_UTF8'); case JSON_ERROR_RECURSION: exit('JSON_ERROR_RECURSION'); case JSON_ERROR_INF_OR_NAN: exit('JSON_ERROR_INF_OR_NAN'); case JSON_ERROR_UNSUPPORTED_TYPE: exit('JSON_ERROR_UNSUPPORTED_TYPE'); case JSON_ERROR_INVALID_PROPERTY_NAME: exit('JSON_ERROR_INVALID_PROPERTY_NAME'); case JSON_ERROR_UTF16: exit('JSON_ERROR_UTF16'); default: exit('JSON_ERROR_UNKNOWN'); } } // 返回JSON数据格式到客户端 包含状态信息 header('Content-Type:application/json; charset=utf-8'); //跨域请求 //header('Access-Control-Allow-Origin:*'); // exit($Result); // $Result= json_decode($Result); exit($Result); // return $Result; } function getSubstr($str, $leftStr, $rightStr) { $left = strpos($str, $leftStr); //echo '左边:'.$left; $right = strpos($str, $rightStr,$left); //echo '<br>右边:'.$right; if($left < 0 or $right < $left) return ''; return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr)); } //header('Content-type:text/json'); //判断GET值 if($_REQUEST['url']!="") //如果不为空 { $tk_url=$_REQUEST['url']; //赋值 //jsonReturn(1,'获取数据成功',$tk_url); } else { jsonReturn(-1,'No url return Fail'); exit(0); } $post_data=array('name' => '1234'); //pos数据 $method="GET"; $file=curlPost($tk_url,$data,$method); //$file=mb_convert_encoding($file,'UTF-8','GBK'); $file = strip_tags($file); //过滤html //sleep(1); $p1 = 'UserModule'; $p2 = 'shortId'; //preg_match('/{"id":"(.*?)","shortId/',$file, $match); $getuid=getSubstr($file,$p1,$p2); //echo '$getuid的字节长度为:'.strlen($getuid); $t2 = microtime(true); //echo '耗时'.round($t2-$t1,3).'秒'; if(strlen( $getuid) < 100 ) { jsonReturn(1,'success '.round($t2-$t1,3),$getuid); } else { jsonReturn(-1,'No find '.round($t2-$t1,3)); } //print_r($file);
运行结果如下: