diff --git a/Mobile12306New/css/css.css b/Mobile12306New/css/css.css index f2713d8..4dc686c 100644 --- a/Mobile12306New/css/css.css +++ b/Mobile12306New/css/css.css @@ -124,11 +124,11 @@ input[type=radio]:checked:after{content:''; display:block; width:12px; height:12 .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:active{background: #fa7a13;box-shadow: 0 1px 0px #fa6f13} .btn_block{display:block; width:100%; } .btn_lg{height:45px; line-height:45px;} .btn_m{height:30px; line-height:30px; font-size:0.75rem;} .btn_success{background:#fa8c13;} +.btn_success:active{background: #fa7a13;box-shadow: 0 1px 0px #fa6f13} .btn_gray{background:#b5b5b5;} .box{padding:10px 15px;} diff --git a/Mobile12306New/proxy.php b/Mobile12306New/proxy.php new file mode 100644 index 0000000..6a3ac58 --- /dev/null +++ b/Mobile12306New/proxy.php @@ -0,0 +1,254 @@ +$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; +