本来让下面的小弟用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);
运行结果如下:

老马黑科技



