php代理访问
<?php
//授权IP
$ips=['119.29.29.29','8.8.8.8'];
//代理IP直接退出
empty($_SERVER['HTTP_VIA'])orexit('AccessDenied');
//防止快速刷新
session_start();
$seconds='3';//时间段[秒]
$refresh='5';//刷新次数
//设置监控变量
$cur_time=time();
if(isset($_SESSION['last_time'])){
$_SESSION['refresh_times']+=1;
}else{
$_SESSION['refresh_times']=1;
$_SESSION['last_time']=$cur_time;
}
//处理监控结果
if($cur_time-$_SESSION['last_time']<$seconds){
if($_SESSION['refresh_times']>=$refresh&&!in_array($getIP,$ips)){
//跳转至攻击者服务器地址
header(sprintf('Location:%s','
));
exit('AccessDenied');
}
}else{
$_SESSION['refresh_times']=0;
$_SESSION['last_time']=$cur_time;
}
functiongetIP(){
if(getenv('HTTP_CLIENT_IP')){
$ip=getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$ip=getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('HTTP_X_FORWARDED')){
$ip=getenv('HTTP_X_FORWARDED');
}elseif(getenv('HTTP_FORWARDED_FOR')){
$ip=getenv('HTTP_FORWARDED_FOR');
}elseif(getenv('HTTP_FORWARDED')){
$ip=getenv('HTTP_FORWARDED');
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return$ip;
}
㈡ PHP怎么禁止代理访问
要禁止代理访问,首先你要分辨对方是否使用了代理。
一般来说可以直接通过HTTP协议头中的REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR来判断。
比如,没有使用代理的情况下,后两个一般是空的,第一个为真实IP;
而使用了一般的代理的话,前两个会变成代理的IP,而第三个则是真实IP。
如果使用了一般的匿名代理的话,则三个都会变为代理的IP。
如果使用了欺骗型的匿名代理的话,前两个还是代理的IP,而第三个会被伪造为一个随机的IP。
如果使用了高级匿名代理的话,后两个和没有代理一样,是空的,第一个则为代理IP。
以上,由于HTTP协议头是很容易伪造的,一般很难判断用户是否使用了代理的,因为现在绝大多数人都是用的匿名代理,而一般要真的通过上面的方式能检测到的,很可能是只能通过代理访问网络的人,比如局域网之类。
不过如果你会JS的话,可以参考一下WebRTC,这个是HTML5带的一个API,可以直接获取到真实IP,然后发送回服务器,再和REMOTE_ADDR比对一下,就可以准确知道是否使用了代理了(使用了代理,那WebRTC获取到的肯定是和REMOTE_ADDR不一样的)。但是这个办法也仅限于使用了新版浏览器的用户(必须支持WebRTC),并且没有装屏蔽WebRTC的插件(可以通过Chrome的插件来禁用WebRTC的,较旧的浏览器也可以在配置里停用WebRTC),并且,也不是完全不可以伪造,因为随便写个脚本放在浏览器里替换掉默认的WebRTC API,就可以提供一个虚假的IP(不过就目前来看还没人这么干,大多数都是想办法直接停用WebRTC),所以这个办法也不是100%可靠的。
如果你可以准确判断代理了,就简单了,直接在代码里面die;掉就行了。
㈢ PHP 函数代理调用
$args是参数数组,$args[0]就是第一个参数,这里把第一个参数作为函数名。
具体例子比如说这一句:
say('sayChinese', '我是','中国人'); //这里调用了函数say
function say() {
$args = func_get_args(); // 参数数组就是('sayChinese', '我是','中国人')
call_user_func_array($args[0], $args);
// 这个$args[0]就是'sayChinese',作为函数名,后面的'我是','中国人'作为参数传给函数'sayChinese'
}
㈣ php通过代理访问怎么实现
while (rs.next()) {
Bars bar = new Bars();
bar.setId(rs.getLong("id"));
bar.setName(rs.getString("name"));
bar.setType(rs.getInt("type"));
bar.setCreatorId(rs.getLong("creator_id"));
resultList.add(bar);
}
㈤ php如何用代理访问网站 求代码
CURL 就可以啊!你的先自己开个http代理 。或者网络找一些http代理
然后在curl里面设置http代理就可以了。
functioncurl_string($url,$user_agent,$proxy){
$ch=curl_init();
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_COOKIEJAR,"c:cookie.txt");//可删除
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
$content="http://www.google.com";$user_agent="Mozilla/4.0";$proxy="http://192.11.222.124:8000";
㈥ PHP虚拟空间是否可以实现自动透过指定代理服务器被访问者访问
虚拟空间实现不了
你的访问端→web→代理服务器→返回到WEB→返回访问端
㈦ PHP实现代理IP
“代理IP”现在有很多种的,就是软件改IP的。
软件上有很多IP点提供给使用者切换的
在电脑上安装IP转换器,
在IP软件上选择不同的IP点连接就可以了的。
推荐软件。可找到类似软件的。
全国大多数城市(数百万IP点任意切换)
希望可以帮到你。多少电脑多可以使用的。
㈧ 有没有办法实现PHP代理抓取网页内容
可以呀。
用snoopy的类,网上有snoopy.class.php,你自行网络查找。
snoopy的类可以设置$proxy_host参数,设置代理主机,$proxy_port是代理主机端口。你下载一个下来,网上的教程很多,看看应该明白。
至于调用proxy.txt,轮换ip的问题,我觉得可用代理不是很多的话,可以设置成随机选择代理就好了。你采集的那个网站记录的是你代理服务器的ip
㈨ 怎么样用php语言实现通过proxy代理服务器访问网站呢
function curl_string ($url,$timeout = 3,$proxy=1){
$ua = array('Mozilla','Opera','Microsoft Internet Explorer','ia_archiver');
$op = array('Windows','Windows XP','Linux','Windows NT','Windows 2000','OSX');
$agent = $ua[rand(0,3)].'/'.rand(1,8).'.'.rand(0,9).' ('.$op[rand(0,5)].' '.rand(1,7).'.'.rand(0,9).'; en-US;)';
Tor 地址与端口
$tor = 'http://www.aimilife.com'; //这里是你的代理服务器
连接超时设置
$timeout = 3;
$ack = curl_init();
if($proxy)
{
curl_setopt($ack, CURLOPT_PROXY, $tor);
}
curl_setopt($ack, CURLOPT_URL, $url);
curl_setopt($ack, CURLOPT_HEADER, 0);
curl_setopt($ack, CURLOPT_USERAGENT, $agent);
curl_setopt($ack, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ack, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ack, CURLOPT_TIMEOUT, $timeout);
$result = curl_exec($ack);
curl_close($ack);
return $result;
}
㈩ 如何利用php获取url反向代理后面的真实地址
下面的代码用于获得真实的客户端ip,俗话说,道高一尺魔高一丈,更高级的伪装能够骗过这种检测也有可能,不过至少让伪装的门槛提高不少。
function getip() {
$unknown = 'unknown';
if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown) ) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif ( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) ) {
$ip = $_SERVER['REMOTE_ADDR'];
}
/*
处理多层代理的情况
或者使用正则方式:$ip = preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : $unknown;
*/
if (false !== strpos($ip, ','))
$ip = reset(explode(',', $ip));
return $ip;
}
需要做下简单解释:
一、没有使用代理服务器的PHP获取客户端IP情况:
REMOTE_ADDR = 客户端IP
HTTP_X_FORWARDED_FOR = 没数值或不显示
二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215)
这类代理服务器还是将客户端真实的IP发送给了访问对象,无法达到隐藏真实身份的目的.
三、使用普通匿名代理服务器的PHP获取客户端IP情况:Anonymous Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215)
这种情况下隐藏了客户端的真实IP,但是向访问对象透露了客户端是使用代理服务器访问它们的.
四、使用欺骗性代理服务器的情况:Distorting Proxies
REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215)
这种情况下同样透露了客户端是使用了代理服务器,但编造了一个虚假的随机IP(220.4.251.159)代替客户端的真实IP来欺骗它.
五、使用高匿名代理服务器的PHP获取客户端IP情况:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 没数值或不显示
无论是REMOTE_ADDR还是HTTP_FORWARDED_FOR,这些头消息未必能够取得到,因为不同的浏览器不同的网络设备可能发送不同的IP头消息.因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值.