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

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

server.php

$client_ip = getip();

$referer = getreferer();

$allow_ip = '192.168.1.100';

$allow_referer = '//www.jb51.net';

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正常访问

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'));

完整代码如下:

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 = '//www.jb51.net/';

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

echo $response;

?>

返回 allow access

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

本文标题: php 使用curl模拟ip和来源进行访问的实现方法

本文地址: http://www.cppcns.com/wangluo/php/189549.html

curl php 模拟来源_php 使用curl模拟ip和来源进行访问的实现方法相关推荐

  1. curl php 模拟来源_PHP cURL实现模拟登录与采集使用方法详解教程

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  2. php 模拟ip访问网页,curl模拟浏览器,ip,来源,进行网站采集的实现方法

    curl模拟浏览器,ip,来源,进行网站采集的实现方法 function doCurl($url, $data=array(), $header=array(), $referer='', $time ...

  3. php模拟苹果手机访问,php 使用curl模拟ip和来源进行访问的实现方法

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

  4. php 提取登录QQsid_php模拟登录qq邮箱(curl命令详解)

    header("Content-type:text/html;charset=utf-8"); $cookie_file = dirname(__FILE__)."/co ...

  5. php curl 模拟Host,php模拟用户请求之CURL

    php的curl功能使用之前,首先我们要开启curl模块,如果是windows操作系统只需要打开php_curl.dll既可,如果是linux我们可以单独编译curl然后修改配置文件增加curl.so ...

  6. PHP用CURL伪造IP和来源

    PHP用CURL伪造IP和来源CURL确实很强悍,可以伪造IP和来源.1.php 请求 2.php .1.php代码: $ch = curl_init(); curl_setopt($ch, CURL ...

  7. php curl post数组_PHP发起curl POST请求时传递数组

    使用 PHP 的 curl 可以发起 HTTP 外部请求,但是发起 POST 请求时,是无法直接传递数组的,从 curl 层面来说,也没有所谓的数组的概念,而更加通用也更合理的传递数据的格式其实是键值 ...

  8. php curl 批量,关于用php的curl批量抓取内容

    先上个单个采集的curl访问案例<?php $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'www.baidu.com'); curl ...

  9. php循环输出多个网络地址图片,php中curl循环往请求多个URL和多线程去请求多个URL的方法...

    php 中curl 循环去请求多个URL和多线程去请求多个URL的方法 第一种:循环请求$sr=array(url_1,url_2,url_3); foreach ($sr as $k=>$v) ...

最新文章

  1. 【天线】天线基础:名词解释
  2. 深度学习光环背后,机器学习的一些新进展!!!
  3. 基于Xml 的IOC 容器的初始化
  4. 360文件粉碎机_中山三乡资料文件销毁粉碎销毁资料文件公司一览表
  5. ruby 生成哈希值_哈希== Ruby中的运算符
  6. /lib/libcrypto.so“ not found,is 32-bit instead of 64-bit
  7. 虚拟机的ip地址为什么会发生变化
  8. 打孔怎么定位_电视机挂架怎么安装
  9. QTP的那些事--共享对象库的使用
  10. 利用css进行网页布局
  11. View与Model绑定注意事项 (视图无数据显示)
  12. ucgui界面 vc_【MM32F103试用体验】ucGUI + FreeRTOS +触摸屏图形界面开发
  13. Oracle long 类型转 varchar2
  14. windows10强制删除文件_Windows10中恶意软件删除
  15. GitHub数据库榜单第一:Redis核心原理实践PDF,点赞已过百万+
  16. Linux系统 | vim配置
  17. Camtasia2022升级最新中文版 2022电脑录屏神器
  18. 计算机word知识试题及答案,全国计算机等级考试Word试题及答案(2)
  19. 才茂CM520如何通过4G物联网卡将信号发送到PC端
  20. 安卓手机微信浏览器缓存问题

热门文章

  1. Vue 页面如何监听用户预览时间
  2. 高段位产品经理必须掌握的商业模式分析该怎么做?
  3. vue 代理重定向_关于vue-router,路由重定向的使用分析
  4. python常用库有哪些餐厅_Python常用库整理
  5. 查看oracle的块大小,查看操作系统块大小
  6. php动态成本管理,网上审批系统环境下的动态目标成本管理
  7. Mysql身份认证漏洞及利用(CVE-2012-2122)
  8. 去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架
  9. 分享下自己的EmpireofCode进攻策略 https://empireofcode.com/ https://empireofcode.com/game/#
  10. CSS属性选择器温故-4