首页 编程设计PHP正文

PHP抓包之curl、file_get_contents 操作实例

云水 PHP 2020-05-02 08:51:47 1925 0 PHP抓包

1.概述

  1. file_get_contents函数多用来于来采集远程服务器上的内容,但使用file_get_contents函数之前我们在php.ini中是必须把allow_url_fopen开启才行

  2.  cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。

2、file_get_contents 和 curl 区别

1.curl 支持更多功能

curl 支持更多协议,有http、https、ftp、gopher、telnet、dict、file、ldap;模拟 Cookie 登录,爬取网页;FTP 上传下载。
fopen / file_get_contents 只能仅支持http协议获取数据。

2.性能

curl 可以进行 DNS 缓存,同一个域名下的图片或其它资源只需要进行一次DNS查询。
curl 相对来说更加快速稳定,访问量高的时候首选 curl,缺点就是相对于 file_get_contents 配置繁琐一点,file_get_contents 适用与处理小访问的应用。

CURL 访问方式

1.语法

curl_init;           //初始化 cURL 会话。
curl_setopt;     //设置 cURL 传输选项。
//curl_setopt 设置 CURLOPT_RETURNTRANSFER 为 TRUE 时将 curl_exec() 获取的信息以字符串返回。
curl_exec;       //返回 true / false,
curl_close;     //关闭 cURL 会话。

2.get请求

//1.初始化
Curl$curl = curl_init();
//设置curl传输选项
curl_setopt($curl, CURLOPT_URL, 'www.baidu.com');//访问ip地址 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//设置为FALSE 禁止 cURL 验证对等证书
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置为1或true时,获取的信息以字符串返回
$data = curl_exec($curl); //返回值
curl_close($curl);
return $data;

3.post请求

$post_data = ['username' => '123456','password' => '******'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'www.baidu.com/login');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, 1);//设置为1或true时,是post请求,
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//post请求参数
$output = curl_exec($ch);
curl_close($ch);$out = json_decode($output);
return $out;

file_get_contents访问方式

1.语法:

file_get_contents(path, include_path, context, start, max_length)

path:要读取的路径或链接。
include_path:是否在路径中搜索文件,搜索则设为 1,默认为 false。
context:修改流的行为,如超时时间,GET / POST 等。
start:开始读文件的位置。
max_length:读取文件的字节数。

2.get请求

$ret = file_get_contents("http://www.baidu.com");

3.post请求

$url = 'www.baidu.com/login';$data = ['username' => '123456','password' => '******'];
$data = json_encode($data);
$opts =  [
                 'http' => [
                                    'method' => 'POST',
                                    'header'  => 'Content-type:application/json',
                                    'content' => $data,
                           ]
        ];
//stream_context_create()函数:创建并返回一个文本数据流并应用各种选项,
//可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程
$context = stream_context_create($opts);
$ret = file_get_contents($url,false,$context);

总结

file_get_contents处理频繁小的时候,如果你的文件被1k+人处理。那么会占用您的服务器大量cpu。
curl 相对来说更加快速稳定,访问量高的时候首选 curl,
根据本人习惯,更喜欢curl,因为他是PHP专业的抓包工具,能够更好的支持数据协议。

版权声明

1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)

本文链接:http://apod.cc/index.php/post/379.html

发表评论

评论列表(0人评论 , 1925人围观)
☹还没有评论,来说两句吧...