学堂 学堂 学堂公众号手机端

PHP抓包之curl、file_get_contents 操作实例

lewis 1年前 (2024-03-29) 阅读数 6 #技术
1.概述
file_get_contents函数多用来于来采集远程服务器上的内容,但使用file_get_contents函数之前我们在php.ini中是必须把allow_url_fopen开启才行
 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专业的抓包工具,能够更好的支持数据协议,本片博客简单的介绍一下curl、file_get_contents的介绍、使用、区别.

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门