php中curl设置ip的方法

发布时间:2020-08-28 09:44:57

来源:亿速云

阅读:84

作者:小新

php中curl设置ip的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!php curl设置ip的方法:首先通过getip方法获取访问者ip;然后使用“getreferer”方法获取访问者来源;最后实现设置页面限制ip和来源访问即可。

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

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

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

server.php<?php

$client_ip = getip();

$referer = getreferer();

$allow_ip = '192.168.1.100';

$allow_referer = 'http://www.csdn.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正常访问<?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, '来源');

模拟ipcurl_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 = 'http://www.csdn.net/';

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

echo $response;

?>

返回 allow access

感谢各位的阅读!看完上述内容,你们对php中curl设置ip的方法大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

php curl修改ip,php中curl设置ip的方法相关推荐

  1. VM虚拟机中如何设置ip地址

    当我们在windows环境下,在cmd命令行中输入ipconfig可以看到我们的主机ip地址,但是我们创建了一台虚拟机,并且装好系统时,输入ifconfig(这里和windows下命令不一样,不要搞混 ...

  2. Asp.Net Core 中如何设置 IP 白名单

    咨询区 MartinM: 我想在一个web站点中实现ip白名单功能,在 MVC 时代我只需要在 web.config 中添加如下配置即可. <security><ipSecurity ...

  3. 一键设置IP地址(快速设置ip地址)

    利用一个批处理文件设置ip地址 假如将ip地址设置为192.168.1.8 子网掩码为255.255.255.0 网关为192.168.1.1 主DNS为202.96.128.68  备用DNS为20 ...

  4. 将ip电话注册到服务器上,ip电话怎么安装设置 ip电话安装设置方法文字详解【图文】...

    随着互联网时代的到来,我们的地球变成了一个"村庄",跨越了时间和空间的界限,可以不夸张的说,一个位于"天涯",另一个身在"海角"都能相互通话 ...

  5. 了解IP地址及如何设置IP地址

    众所周知,在电话通讯中,电话用户是靠电话号码来识别的.同样,在网络中为了区别不同的计算机,也需要给计算机指定一个号码,这个号码就是"IP地址". 什么是IP地址 所谓IP地址就是给 ...

  6. python基础教程:修改Python列表中元素的几种方法

    一.在for循环中直接更改列表中元素的值不会起作用: 如: l = list(range(10)[::2]) print (l) for n in l: n = 0 print (l) 运行结果: [ ...

  7. linux suse10虚拟机在静态IP局域网中如何设置桥接上网

    1.vm网络设置: 手动选择物理网卡为VMnet0.同时自动桥接不选:清空DHCP. 2.进入linux,进入YaST2,选择网路设备中的网卡选项.点击下一步,点击编辑,进入网络地址设置界面.设置可用 ...

  8. 命令行修改 Ubantu 配置静态固定IP地址,或设置ip自动匹配的方法

    当我们想给Ubantu系统修改IP的时候,我们可以通过命令行来进行修改,IP保存路径如下: /etc/netplan/XX-installer-config.yaml 1. 找到config文件并打开 ...

  9. Windows10 修改host文件(windows 设置ip别名)

    Host文件的位置: C:\Windows\System32\drivers\etc\hosts 例如:将winner映射到虚拟机192.168.80.100 IP地址上 只需要在host文件的最后边 ...

最新文章

  1. 异步方法顺序调用问题
  2. 21 window对象常见事件
  3. 如何绘制漂亮的多序列比对图片
  4. oracle 单表查询 详细图文
  5. Android之滑动事件冲突解决 Touch事件处理机制总结
  6. 保存一个 Python 对象,之后使用时直接读取
  7. 多输出模型的评价和模型预测
  8. Mac UE各版本破解方法
  9. 数据库笔试题 (3)
  10. Hexo及Next主题配置(最新版)
  11. Git 基础命令与事件详解(基础版)
  12. emcy协议_商铺三方租赁协议合同范本
  13. Scrapy爬虫框架入门(一)——阳光政务平台
  14. 正弦电压有效值推导过程(为什么与频率无关)
  15. uniapp H5公众号errMsg: “onMenuShareAppMessage:fail, the permission value is offline verifying“
  16. 我的原创软件作品——弹窗拦截器V1.0.1
  17. 小德,真的没想到,去年的千年德三子到现如今的现象级
  18. 供应链金融及产业风控
  19. RSA2分段加密解密
  20. 《SolidWorks 2014中文版机械设计从入门到精通》——2.2 草图命令

热门文章

  1. 如何成功清理重建CloudStack环境
  2. Nginx设置expires设定页面缓存时间
  3. python中encode()函数的用法
  4. 新技术将让硬盘密度再提五倍
  5. Cloud Foundry 在 Azure 中国正式发布
  6. VS2010 代码自动对齐 快捷键
  7. lastLogon和lastLogonTimestamp的区别
  8. EDA实验课课程笔记(五)——NC-verilog的介绍与使用(一)
  9. [视频]MAC中如何单独放大文本字体
  10. Spring DI如何给对象赋空值 以及 对 “” null 空值的总结