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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
关于php mvc开发模式的感想
Jun 28 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
PHP实现的购物车类实例
Jun 17 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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设计模式之命令模式的应用详解
2013/05/21 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
python实现给数组按片赋值的方法
2015/07/28 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
pandas按条件筛选数据的实现
2021/02/20 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
集团薪酬管理制度
2014/01/13 职场文书
校园广播稿500字
2014/02/04 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
歌舞青春观后感
2015/06/10 职场文书
员工给公司的建议书
2019/06/24 职场文书