很多站长朋友们都不太清楚代理IP池php,今天小编就来给大家整理代理IP池php,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP代码如何放行代理服务器IP 2、 如何设置代理IP并检测是否成功??? 3、 php 获取真实IP,区分代理IP 4、 PHP实现代理IP PHP代码如何放行代理服务器IP<?php
//授权 IP
$ips = ['119.29.29.29', '8.8.8.8'];
//代理IP直接退出
empty($_SERVER['HTTP_VIA']) or exit('Access Denied');
//防止快速刷新
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('Access Denied');
}
} else {
$_SESSION['refresh_times'] = 0;
$_SESSION['last_time'] = $cur_time;
}
function getIP() {
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;
}
如何设置代理IP并检测是否成功???可以通过访问访问百度网页,通过返回的网页内容进行判断。有时候也会有bug,即代理无效,但是也会返回一个网页,但不是百度,而且内容大于5000。
通过访问通过访问返回的ip来实现测试。如果返回的不是代理池的IP,那么很遗憾,这个代理IP是无效的,如果返回到代理池的IP,那就是有效代理。
通过php中curl函数设置代理,再访问百度或者其他能访问到的网站,通过返回的状态码是否等于200来判断代理IP是不是可以正常使用的。
企鹅验证代理IP打开企鹅进入登陆页面,设置网络类型“http代理”或者“sock5代理”,输入IP地址和端口、“用户名”和“密码”,如果是“终端IP授权”则不用输入。接着可以开始测试,如果是提示“连接代理服务器成功”则说明代理IP是有效的,反之,提示“连接代理服务器失败”则是无效的代理IP。
php 获取真实IP,区分代理IP使用php获取IP的方法能找到很多。
function getIp(){
if (getenv("HTTP_CLIENT_IP") strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) $_SERVER['REMOTE_ADDR'] strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
对这段代码进行解释,这里用到了两个函数,getenv()和strcasecmp(),前一个函数获取得系统的环境变量,如果能取到值,则返回该值,不能则返回false.
$_SERVER是服务器超级全局变量数组,用$_SERVER['REMOTE_ADDR']同样可以获取到客户端的IP地址.二者的区别在于,getenv不支持IIS的isapi方式运行的php.
strcasecmp(string1,string2)字符串函数的用法是把string1和string2进行比较,如果相等返回0,如果string1大于string2,返回大于0的数,小于则返回小于0的数.
函数先使用客户IP,如果不成立尝试用代理的方法,如果不行,再使用REMOTE_ADDR。
PHP实现代理IPPHP程序在服务器上运行,不在浏览者的机器上运行,只是把运行生成的HTML结果发送给浏览者的浏览器程序,不可能修改浏览者的代理设置。
PHP可以修改服务器机器的代理设置,方法是修改注册表。
关于代理IP池php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于代理IP池php 代理ip池的实现原理的详细内容...