项目:[PHP]RequestProxy回到主页

RequestProxy

看名字就很明显,这是一个通过PHP脚本来简单实现的请求代理
离谱!一不小心用两行代码搭了个代理?

说明

此项目最初制作的目的并不是用来访问境外网站!(虽然我视频里面是这么干的)
但是!此项目的真正目的是为某些无法直接调用https请求的物联网设备(如ESP8266)设计的,将此项目布置到非https站点,便可让只支持http的设备请求https。

演示

本来是有演示的!但是proxy.tttttttttt.top这个演示在发布后不久就受到了极其夸张的访问,导致服务器直接被封了


而且从日志里面来看,大多都拿来在访问境外网站。还有一堆人问xxx网站无法访问/访问异常/页面内容缺失……从原理上这就没办法解决,因为代理过来的页面引用的外部资源(如img css js等等)都不会经过代理,页面显示正常才怪。

构建

目前代码已经重写,支持设置Header参数,当header未指定时自动获取访问者的User-Agent并转发目标服务器
<?php
	if(isset($_GET["URL"])){
		$url = $_GET["URL"];
		if(isset($_GET["Header"])){
			$headers = array($_GET["Header"]);
		}else{
			$headers = array();
			$UserHeaders = getallheaders();
			$headers = "User-Agent: ".$UserHeaders["User-Agent"];
		}
		$context = stream_context_create(array('http' => array('header' => $headers)));
		$content = file_get_contents($url, false, $context);
	}else{
		$content = file_get_contents("../main/html");
	}
	echo($content);
?>
						
创建一个php文件,将此代码复制进去,再将php文件放置到web服务器上,你可以在php文件同目录创建一个“about.html”页面,这样在用户没有提供URL参数时返回一个默认页面

使用

请求需要两个参数,URL和Header参数,其中Header参数是可选的。示例:
只提供URL参数,返回https://api.com/的内容
https://yours.com/name.php?URL=https://api.com/

提供URL和Header参数,服务器请求时使用Header,返回https://api.com/的内容(此处用IE11的UA进行示例)
https://yours.com/name.php?URL=https://api.com/&Header=user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
						
网站服务器一般都会对请求Header进行检测,如果没有或异常就会拒绝请求,所以建议还是带上

如果你觉得我做的不错的话,可以赞赏我吗?谢谢啦~