phpcurl访问
❶ php 用CURL 抓取错误提示:Recv failure: Connection was aborted 怎么解决 求助各位大神
一、原因分析
web站点目前主要分为http和https两种协议,其中https类型的网站都是通过ssl协议+http协议的,是目前最安全的网站协议,访问此类网站的时候,会走ssl协议,验证访问者的证书,检测是否安全。
通过curl访问此类网站也是如此流程,但是curl中需要添加相应的参数,绕过ssl证书的验证,才可以正常访问,如出现此错误的一般原因是没有加此参数。
CURLOPT_SSL_VERIFYHOST的值
设为0表示不检查证书
设为1表示检查证书中是否有CN(common name)字段
设为2表示在1的基础上校验当前的域名是否与CN匹配。
二、解决方案
如果出现:
PHP Notice: curl_setopt():
CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in
一般原因是你设置了 curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, true );
改成curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, 2 );就行了。
(1)phpcurl访问扩展阅读
PHP其他原因错误:
1、错误现象
在用curl进行模拟调用时,curl接收内容会出现"Empty reply from server" 和 "Recv failure: Connection was reset"的错误。
2、解决方案
经过对apache的error_log进行跟踪,出现错误"Connection reset by peer: core_output_filter: writing data to the network"
修改httpd.conf,在虚拟主机上添加如下内容:
EnableSendfile off
EnableMMAP off
修改后"Empty reply from server"错误消失。
❷ php curl的几种用法
总结一下项目中用到curl的几种方式 1. php curl的默认调用方法,get方式访问url $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置http头 curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); //设置为客户端支持gzip压缩 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //设置连接等待时间 curl_setopt($ch, CURLOPT_URL, $url ); curl_exec( $ch ); if ($error = curl_error($ch) ) {//出错处理return -1;}fclose($fp); $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //获取http返回值 if( $curl_code == 200 ) { //正常访问url}//异常 2. 设置http header支持curl访问lighttpd服务器Java代码$header[]= 'Expect:'; $header[]= 'Expect:'; 3. 设置curl,只获取http header,不获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); 或者只获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body curl_setopt($ch, CURLOPT_NOBODY, 0); 4. 访问虚拟主机,需设置Host $header[]= 'Host: '.$host; 5. 使用post, put, delete等REStful方式访问urlpost:curl_setopt($ch, CURLOPT_POST, 1 ); put, delete: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); //或者PUT,需要服务器支持这些方法。6. 保存下载内容为文件
❸ PHP语言中php curl的几种应用方式
今天我们向大家介绍的是在PHP中的php curl的几种使用方式,希望对有需要的朋友有所帮助。
2. 设置http header支持php curl访问lighttpd服务器
3. 设置curl,只获取http header,不获取body:
或者只获取body:
4. 访问虚拟主机,需设置Host
5. 使用post, put, delete等REStful方式访问url
6. php curl保存下载内容为文件
❹ php使用curl带cookie访问一直失败求助
楼主可以借鉴下,首先,利用curl发送post请求登录login.php,成功,并且保存了cookie文件。
第二步,post发送数据包到co_get_corule.php,失败,得到登录页面的源码。
于是,尝试简单的get请求,get获取index.php,同上,依旧是cookie没带上的效果。
第三步,检查cookie文件,确实存在,且内容也是正确的。如果楼主有时间的话,可以多去后盾人学习,里面有不错的东西
❺ php curl的几种用法
总结一下项目中用到curl的几种方式
1. php curl的默认调用方法,get方式访问url
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置http头
curl_setopt($ch, CURLOPT_ENCODING, gzip ); //设置为客户端支持gzip压缩
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //设置连接等待时间
curl_setopt($ch, CURLOPT_URL, $url );
curl_exec( $ch );
if ($error = curl_error($ch) ) {//出错处理return -1;}fclose($fp);
$curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //获取http返回值
if( $curl_code == 200 ) {
//正常访问url}//异常
2. 设置http header支持curl访问lighttpd服务器Java代码$header[]= 'Expect:';
$header[]= 'Expect:';
3. 设置curl,只获取http header,不获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
或者只获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
curl_setopt($ch, CURLOPT_NOBODY, 0);
4. 访问虚拟主机,需设置Host
$header[]= 'Host: '.$host;
5. 使用post, put, delete等REStful方式访问urlpost:curl_setopt($ch, CURLOPT_POST, 1 );
put, delete:
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, DELETE); //或者PUT,需要服务器支持这些方法。
6. 保存下载内容为文件
❻ php curl访问链接返回空,打印没有error,但是浏览器打开有数据
有可能对方加了抓取限制,对方判断是curl的输出空string
你可以试试带cookie、头信息和经常更换ip之类的
❼ PHP使用curl访问https页面的问题
你试试 curl_multi_getcontent( resource $ch ) 我记得这个东西是要接受的 忘了是在传过去的页面还是本页面
❽ PHP curl如何实现对需要用户名和密码的URL的访问
抓包看传了些什么数据,用curl模拟http请求发送post数据,成功后记下cookies去访问URL1
❾ php使用curl访问的页面中,出现重定向时, 如何获取重定向后的内容
程序没问题,能得到网页内容并输出。
有可能是你的 xxx.php 没有重定向成功。
如果在Linux下,可以先用
wget http://www.xxx.com/xxx.php
看看有没有输出想要的结果。
我用来测试的 xxx.php
<?php
function redirect($url)
{
if(headers_sent()) {
return false;
}
if(substr($url, 0, 4) != 'http') {
$schema = $_SERVER['SERVER_PORT'] == '443' ? 'https' : 'http';
$host = strlen($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
$url = "$schema://$host$to";
}
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
exit();
}
redirect('http://google.com/');
❿ PHP使用curl的问题
这是PHP对于curl的一个解释,简单地说就是,curl是一个库,能让你通过URL和许多不同种的服务器进行勾搭、搭讪和深入交流,并且还支持许多协议。并且人家还说了curl可以支持https认证、http post、ftp上传、代理、cookies、简单口令认证等等功能啦。