php 使用curl模拟ip和来源进行访问的实现方法


Posted in PHP onMay 02, 2017

对于限制了ip和来源的网站,使用正常的访问方式是无法访问的。本文将介绍一种方法,使用php的curl类实现模拟ip和来源,访问那些限制了ip和来源的网站。

1.设置页面限制ip和来源访问

server.php

<?php

$client_ip = getip();
$referer = getreferer();

$allow_ip = '192.168.1.100';
$allow_referer = 'https://3water.com';

if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){
  echo 'allow access';
}else{
  echo 'deny access';
}


// 获取访问者ip
function getip(){
  if(!empty($_SERVER['HTTP_CLIENT_IP'])){
    $cip = $_SERVER['HTTP_CLIENT_IP'];
  }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $cip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }elseif(!empty($_SERVER['REMOTE_ADDR'])){
    $cip = $_SERVER['REMOTE_ADDR'];
  }else{
    $cip = '';
  }
  return $cip;
}

// 获取访问者来源
function getreferer(){
  if(isset($_SERVER['HTTP_REFERER'])){
    return $_SERVER['HTTP_REFERER'];
  }
  return '';
}

?>

2.使用curl正常访问

<?php
function doCurl($url, $data=array(), $header=array(), $timeout=30){

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

  $response = curl_exec($ch);

  if($error=curl_error($ch)){
    die($error);
  }

  curl_close($ch);

  return $response;

}

// 调用
$url = 'http://www.example.com/server.php';
$response = doCurl($url);

echo $response;
?>

返回 deny access

3.使用curl模拟ip和来源进行访问

模拟来源

curl_setopt($ch, CURLOPT_REFERER, '来源');

模拟ip

curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 模拟ip','X-FORWARDED-FOR: 模拟ip'));

完整代码如下:

<?php
function doCurl($url, $data=array(), $header=array(), $referer='', $timeout=30){

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

  // 模拟来源
  curl_setopt($ch, CURLOPT_REFERER, $referer);

  $response = curl_exec($ch);

  if($error=curl_error($ch)){
    die($error);
  }

  curl_close($ch);

  return $response;

}

// 调用
$url = 'http://www.example.com/server.php';
$data = array();

// 设置IP
$header = array(
  'CLIENT-IP: 192.168.1.100',
  'X-FORWARDED-FOR: 192.168.1.100'
);

// 设置来源
$referer = 'https://3water.com/';

$response = doCurl($url, $data, $header, $referer, 5);

echo $response;
?>

返回 allow access

以上这篇php 使用curl模拟ip和来源进行访问的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
网友原创的PHP模板类代码
Sep 07 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
Yii快速入门经典教程
Dec 28 PHP
微信支付开发发货通知实例
Jul 12 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
php生成无限栏目树
Mar 16 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
PHP实现验证码校验功能
Nov 16 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 #PHP
php 函数使用可变数量的参数方法
May 02 #PHP
PHP 序列化和反序列化函数实例详解
Jul 18 #PHP
php头像上传预览实例代码
May 02 #PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 #PHP
AJAX的使用方法详解
Apr 29 #PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 #PHP
You might like
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
jQuery回车实现登录简单实现
2013/08/20 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
Javascript缓存API
2016/06/14 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
js读取本地文件的实例
2017/12/22 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
Python3基础之函数用法
2014/08/13 Python
跟老齐学Python之复习if语句
2014/10/02 Python
python有证书的加密解密实现方法
2014/11/19 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
Python bisect模块原理及常见实例
2020/06/17 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
执行总经理岗位职责
2014/02/03 职场文书
大专会计自我鉴定
2014/02/06 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书