php使用curl伪造浏览器访问操作示例


Posted in PHP onSeptember 30, 2019

本文实例讲述了php使用curl伪造浏览器访问操作。分享给大家供大家参考,具体如下:

原理

服务器主要通过User-Agent识别客户端是何种设备

User-Agent是Http协议中的一部分,属于头域的组成部分。基本格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息。

具体方法如下

/**
 * curl获取数据
 * @param $url
 * @return mixed
 */
function get_url($url)
{
  $ifpost = 0;
  $datafields = '';
  $cookiefile = '';
  $v = false;
  //构造随机ip
  $ip_long = array(
    array('607649792', '608174079'), //36.56.0.0-36.63.255.255
    array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
    array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
    array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
    array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
    array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
    array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
    array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
    array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
    array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
  );
  $rand_key = mt_rand(0, 9);
  $ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
//模拟http请求header头
  $header = array("Connection: Keep-Alive","Accept: text/html, application/xhtml+xml, */*", "Pragma: no-cache", "Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",'CLIENT-IP:'.$ip,'X-FORWARDED-FOR:'.$ip);
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, $v);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  $ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost);
  $ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  $cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
  $cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
  curl_setopt($ch,CURLOPT_TIMEOUT,60); //允许执行的最长秒数
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  $ok = curl_exec($ch);
  curl_close($ch);
  unset($ch);
  return $ok;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
透析PHP的配置文件php.ini
Oct 09 PHP
PHP Directory 函数的详解
Mar 07 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
php发送与接收流文件的方法
Feb 11 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
php多进程应用场景实例详解
Jul 22 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 #PHP
Laravel框架控制器的request与response用法示例
Sep 30 #PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 #PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 #PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 #PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 #PHP
php7下的filesize函数
Sep 30 #PHP
You might like
php部分常见问题总结
2008/03/27 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
php实现算术验证码功能
2018/12/05 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
优秀党支部事迹材料
2014/01/14 职场文书
高三语文教学反思
2014/01/15 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
从事会计工作年限证明
2015/06/23 职场文书