add proxy
This commit is contained in:
parent
da5ee09039
commit
4750c24171
@ -124,11 +124,11 @@ input[type=radio]:checked:after{content:''; display:block; width:12px; height:12
|
|||||||
.form_cardimg img{max-width:100%;}
|
.form_cardimg img{max-width:100%;}
|
||||||
|
|
||||||
.btn{ height:40px; padding:0 1em;-webkit-box-sizing: border-box; line-height:40px; background:#ffbb51; border:0; margin:0; display:inline-block; border-radius:3px; font-size:1.1875rem; color:#FFF; text-align:center; position:relative; overflow:hidden;}
|
.btn{ height:40px; padding:0 1em;-webkit-box-sizing: border-box; line-height:40px; background:#ffbb51; border:0; margin:0; display:inline-block; border-radius:3px; font-size:1.1875rem; color:#FFF; text-align:center; position:relative; overflow:hidden;}
|
||||||
.btn:active{background: #fa7a13;box-shadow: 0 1px 0px #fa6f13}
|
|
||||||
.btn_block{display:block; width:100%; }
|
.btn_block{display:block; width:100%; }
|
||||||
.btn_lg{height:45px; line-height:45px;}
|
.btn_lg{height:45px; line-height:45px;}
|
||||||
.btn_m{height:30px; line-height:30px; font-size:0.75rem;}
|
.btn_m{height:30px; line-height:30px; font-size:0.75rem;}
|
||||||
.btn_success{background:#fa8c13;}
|
.btn_success{background:#fa8c13;}
|
||||||
|
.btn_success:active{background: #fa7a13;box-shadow: 0 1px 0px #fa6f13}
|
||||||
.btn_gray{background:#b5b5b5;}
|
.btn_gray{background:#b5b5b5;}
|
||||||
|
|
||||||
.box{padding:10px 15px;}
|
.box{padding:10px 15px;}
|
||||||
|
254
Mobile12306New/proxy.php
Normal file
254
Mobile12306New/proxy.php
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
//var_dump($_SERVER);
|
||||||
|
|
||||||
|
/*********all header*******************/
|
||||||
|
$headers = array();
|
||||||
|
foreach($_SERVER as $key=>$value)
|
||||||
|
{
|
||||||
|
if('HTTP_' == substr($key,0,5))
|
||||||
|
{
|
||||||
|
$headers[str_replace('_','-',substr($key,5))] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(isset($_SERVER['PHP_AUTH_DIGEST']))
|
||||||
|
{
|
||||||
|
$headers['AUTHORIZATION'] = $_SERVER['PHP_AUTH_DIGEST'];
|
||||||
|
}
|
||||||
|
elseif (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
|
||||||
|
{
|
||||||
|
$headers['AUTHORIZATION'] = base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW']);
|
||||||
|
}
|
||||||
|
if (isset($_SERVER['CONTENT_LENGTH']))
|
||||||
|
{
|
||||||
|
$headers['CONTENT-LENGTH'] = $_SERVER['CONTENT_LENGTH'];
|
||||||
|
}
|
||||||
|
if (isset($_SERVER['CONTENT_TYPE']))
|
||||||
|
{
|
||||||
|
$headers['CONTENT-TYPE'] = $_SERVER['CONTENT_TYPE'];
|
||||||
|
}
|
||||||
|
/**************************/
|
||||||
|
|
||||||
|
|
||||||
|
$method = isset($_SERVER['REQUEST_METHOD'])?$_SERVER['REQUEST_METHOD'] :"";
|
||||||
|
if($method == 'OPTIONS')
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$url = isset($headers['FISHPROXY-RAWURL'])?$headers['FISHPROXY-RAWURL']:"";
|
||||||
|
|
||||||
|
if($url == '')
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$url = urldecode($url);
|
||||||
|
|
||||||
|
if($_SERVER['QUERY_STRING'])
|
||||||
|
{
|
||||||
|
$arr_query_string = explode("&",$_SERVER['QUERY_STRING']);
|
||||||
|
//array_shift($arr_query_string);
|
||||||
|
if(is_array($arr_query_string) && count($arr_query_string)>0)
|
||||||
|
{
|
||||||
|
$query_string = implode("&",$arr_query_string);
|
||||||
|
//echo $url."\n";
|
||||||
|
//var_dump(strpos($url,"?"))."\n";
|
||||||
|
if(strpos($url,"?") === false)
|
||||||
|
{
|
||||||
|
$url = $url."?".$query_string;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(substr($url,-1) == "&")
|
||||||
|
{
|
||||||
|
$url = $url. $query_string;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$url = $url."&".$query_string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$myheader = array();
|
||||||
|
$ch = curl_init($url);
|
||||||
|
if($method == 'POST')
|
||||||
|
{
|
||||||
|
$http_build_query = file_get_contents("php://input");
|
||||||
|
curl_setopt($ch,CURLOPT_POST,1);
|
||||||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $http_build_query);
|
||||||
|
|
||||||
|
}
|
||||||
|
$url_parse = parse_url($url);
|
||||||
|
|
||||||
|
$cookietag = str_replace('.','',$url_parse['host'])."_";
|
||||||
|
|
||||||
|
|
||||||
|
foreach($headers as $header=>$v)
|
||||||
|
{
|
||||||
|
if(strpos($header,'FISHPROXY-')===0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
switch($header)
|
||||||
|
{
|
||||||
|
case "HOST":
|
||||||
|
#echo $url,$dynamicHost;
|
||||||
|
break;
|
||||||
|
case "CONNECTION":
|
||||||
|
break;
|
||||||
|
case "ACCEPT":
|
||||||
|
$myheaders['ACCEPT'] = 'Accept:'.$v;
|
||||||
|
break;
|
||||||
|
case 'ACCEPT-LANGUAGE':
|
||||||
|
$myheaders['ACCEPT-LANGUAGE'] = 'Accept-Language:'.$v;
|
||||||
|
break;
|
||||||
|
case "REFERER":
|
||||||
|
curl_setopt($ch, CURLOPT_REFERER,$v);
|
||||||
|
break;
|
||||||
|
case 'USER-AGENT':
|
||||||
|
curl_setopt($ch,CURLOPT_USERAGENT,$v);
|
||||||
|
break;
|
||||||
|
case 'CONTENT-TYPE':
|
||||||
|
$myheaders['CONTENT-TYPE'] = "Content-type:".$v;
|
||||||
|
break;
|
||||||
|
//case 'CONTENT-LENGTH':
|
||||||
|
// $myheaders['CONTENT-LENGTH'] = "Content-length:".$v;
|
||||||
|
// break;
|
||||||
|
case 'COOKIE':
|
||||||
|
$cookies = explode(";",$v);
|
||||||
|
$str_cookie = array();
|
||||||
|
if(is_array($cookies))
|
||||||
|
{
|
||||||
|
foreach($cookies as $cookie)
|
||||||
|
{
|
||||||
|
if(strpos(trim($cookie),$cookietag) ===0 && false===strpos($cookie,'TIETONG'))
|
||||||
|
{
|
||||||
|
$str_cookie[] = substr(trim($cookie),strlen($cookietag));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_setopt($ch,CURLOPT_COOKIE,implode("; ",$str_cookie));
|
||||||
|
break;
|
||||||
|
case 'ORIGIN':
|
||||||
|
$myheaders[$header] = "Origin:".$v;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// $myheaders[$header] = $header.":".$v;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach($headers as $header=>$v)
|
||||||
|
{
|
||||||
|
if(!strpos($header,'FISHPROXY-')===0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$header = substr($header,10);
|
||||||
|
switch($header)
|
||||||
|
{
|
||||||
|
case "HOST":
|
||||||
|
break;
|
||||||
|
case "CONNECTION":
|
||||||
|
break;
|
||||||
|
case "ACCEPT":
|
||||||
|
$myheader['ACCEPT'] = 'Accept:'.$v;
|
||||||
|
break;
|
||||||
|
case 'ACCEPT-LANGUAGE':
|
||||||
|
$myheaders['ACCEPT-LANGUAGE'] = 'Accept-Language:'.$v;
|
||||||
|
break;
|
||||||
|
case "REFERER":
|
||||||
|
curl_setopt($ch, CURLOPT_REFERER,$v);
|
||||||
|
break;
|
||||||
|
case 'USER-AGENT':
|
||||||
|
curl_setopt($ch,CURLOPT_USERAGENT,$v);
|
||||||
|
break;
|
||||||
|
case 'CONTENT-TYPE':
|
||||||
|
$myheaders['CONTENT-TYPE'] = "Content-type:".$v;
|
||||||
|
break;
|
||||||
|
case 'CONTENT-LENGTH':
|
||||||
|
$myheaders['CONTENT-LENGTH'] = "Content-length:".$v;
|
||||||
|
break;
|
||||||
|
case 'COOKIE':
|
||||||
|
curl_setopt($ch,CURLOPT_COOKIE,$v);
|
||||||
|
break;
|
||||||
|
//case 'ORIGIN':
|
||||||
|
// $myheaders['ORIGIN'] = "Origin:".$v;
|
||||||
|
//break;
|
||||||
|
default:
|
||||||
|
// $myheaders[$header] = $header.":".$v;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_setopt($ch,CURLOPT_ENCODING ,'gzip,deflate');
|
||||||
|
curl_setopt($ch,CURLOPT_HTTPHEADER,$myheaders);
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||||
|
curl_setopt($ch,CURLOPT_HEADER,1);
|
||||||
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
|
||||||
|
|
||||||
|
$response = curl_exec($ch);
|
||||||
|
$info = curl_getinfo($ch);
|
||||||
|
$error = curl_error ($ch);
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$arr_temp = explode("\r\n\r\n",$response);
|
||||||
|
|
||||||
|
$redirect_count = $info['redirect_count'];
|
||||||
|
$header_length = 0;
|
||||||
|
for($i = 0; $i< $redirect_count+1; $i++)
|
||||||
|
{
|
||||||
|
$header = $arr_temp[$i];
|
||||||
|
$header_length += strlen($header);
|
||||||
|
$header_length +=4;
|
||||||
|
if(strpos($header,'HTTP/1.1 100 Continue')!==false)
|
||||||
|
{
|
||||||
|
$redirect_count ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$body = substr($response,$header_length);
|
||||||
|
if(isset($info['content_type']) && strpos(strtoupper($info['content_type']),'TEXT/HTML')!==false &&
|
||||||
|
(strpos(strtoupper($info['content_type']),'GB2312') !==false || strpos(strtoupper($info['content_type']),'GBK')!==false))
|
||||||
|
{
|
||||||
|
$body = @iconv('gbk','utf-8',$body);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(preg_match_all('/Set-Cookie:[\s]+([^=]+)=([^;]+)/i', $header,$match))
|
||||||
|
{
|
||||||
|
if(is_array($match) && count($match) == 3)
|
||||||
|
{
|
||||||
|
foreach($match[1] as $k=>$v)
|
||||||
|
{
|
||||||
|
setcookie($cookietag.$v,$match[2][$k],time()+86400,'/12306');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo $body;
|
||||||
|
|
||||||
|
|
||||||
|
//Ìí¼ÓÈÕÖ¾¼Ç¼
|
||||||
|
if($url == 'http://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand')
|
||||||
|
{
|
||||||
|
if(strpos($header,'image/jpeg') <=0)
|
||||||
|
{
|
||||||
|
error_log(date("Y-m-d H:i:s"). " code can't show\n",3,'../logs/log_'.date("Ymd").".log");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//error_log('code can show',3,'../logs/log_'.date("Ymd").".log");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//var_dump($error);
|
||||||
|
exit;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user