PHP CURL 抓取失败 自己调试
蛋疼的一下午,物理机win7旗舰版+APACHE2 ,CURL抓取一直成功。 虚拟机ubuntu+apache2一直抓取失败。
晚上,问个仁兄才知道,CURL可以调试: 参考这位兄台: 地址
curl_errno 和 curl_error 函数,分别返回 HTTP 的错误代码和错误类别。例如: <?php
$ch = curl_init('http://www.soso.com/');
curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
?> 返回: Curl error: couldn't connect to host
我嘞个去,无法连接www.soso.com 是怎么回事,DNS错误找不到IP?ping www.soso.com 也是OK的。 ping的通
$ch = curl_init('http://www.soso.com/');
curl_setopt($ch, CURLINFO_HEADER_OUT, true);//curl_getinfo 函数返回的数组将包含 cURL 请求的 header 信息
curl_setopt($ch, CURLOPT_HEADER , true);//回应的 header 信息
curl_exec($ch);
if (curl_errno($ch)) {
var_dump(curl_getinfo($ch));
var_dump('Curl error: ' . curl_error($ch));
}
curl_close($ch);
依旧是那些看不懂的信息一大堆:
array(22) {
["url"]=>
string(20) "http://www.soso.com/"
["content_type"]=>
NULL
["http_code"]=>
int(0)
["header_size"]=>
int(0)
["request_size"]=>
int(0)
["filetime"]=>
int(-1)
["ssl_verify_result"]=>
int(0)
["redirect_count"]=>
int(0)
["total_time"]=>
float(63.127513)
["namelookup_time"]=>
float(2.0E-5)
["connect_time"]=>
float(0)
["pretransfer_time"]=>
float(0)
["size_upload"]=>
float(0)
["size_download"]=>
float(0)
["speed_download"]=>
float(0)
["speed_upload"]=>
float(0)
["download_content_length"]=>
float(-1)
["upload_content_length"]=>
float(-1)
["starttransfer_time"]=>
float(0)
["redirect_time"]=>
float(0)
["certinfo"]=>
array(0) {
}
["redirect_url"]=>
string(0) ""
}
string(36) "Curl error: couldn't connect to host"
最后,还是没办法。试一下wget 抓www.soso.com 我怀疑网络很有问题。
大概5分钟后,终于成功抓取到了一次www.soso.com页面。 5分钟啊,C.网络肯定有问题
路由追踪下:
root@ubuntu:~# tracepath www.soso.com
: 142.54.182.194 .071ms pmtu
: 142.54.182.193 .475ms
: 142.54.182.193 .468ms
: 192.187.107.125 .311ms
: 69.30.209.137 .598ms
: te0---.mpd22.mci01.atlas.cogentco.com .625ms
: be2141.ccr22.dfw01.atlas.cogentco.com .982ms
: be2032.ccr21.dfw03.atlas.cogentco.com .210ms
: 4.68.111.101 .825ms asymm
: vlan80.csw3.Dallas1.Level3.net .881ms asymm
: ae--.ebr3.Dallas1.Level3.net .135ms asymm
: ae--.ebr2.LosAngeles1.Level3.net .265ms asymm
: ae--.csw2.LosAngeles1.Level3.net .357ms
: ae--.edge6.LosAngeles1.Level3.net .118ms asymm
: 59.43.182.89 .536ms asymm
: 59.43.182.149 .360ms asymm
: 59.43.182.150 .715ms asymm
: 59.43.248.254 .674ms asymm
: 202.55.1.246 .871ms asymm
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
: no reply
Too many hops: pmtu
Resume: pmtu
拿美国2台服务器跟踪路由试一下, 发现都是一模一样的 . 第18个开始失败, 但是另一台却可以正常CURL,和WGET. 卧槽,奇怪。
下个结论吧,SOSO BAIDU都有抓取频率限制。不过至少比SOGOU好多了,SOGOU根本不允许抓。
SOSO BAIDU抓取频率设置还是很高的,一般一秒抓一个我看都没事。 估计我的服务器IP已经被封了吧。心碎!
PHP CURL 抓取失败 自己调试的更多相关文章
- PHP使用CURL抓取网页
CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...
- php curl抓取远程页面内容的代码
使用php curl抓取远程页面内容的例子. 代码如下: <?php /** * php curl抓取远程网页内容 * edit by www.jbxue.com */ $curlPost = ...
- shell用curl抓取页面乱码,参考一下2方面(转)
1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码.乱码:curl www.1ting.com |more乱码:curl -H "Accept-Encoding: gzip&q ...
- 使用file_get_contents()和curl()抓取网络资源的效率对比
使用file_get_contents()和curl()抓取网络资源的效率对比 在将小程序用户头像合成海报的时候,用到了抓取用户头像对应的网络资源,那么抓取方式有很多,比如 file_get_cont ...
- 好用的 curl 抓取 页面的封装函数
由于经常使用php curl 抓取页面的内容,在此mark 平时自己封装的 curl函数,(其实 现在也开始用 Python 来爬了~ ^-^) /** * 封装curl方法 * @author Fr ...
- 通过CURL抓取页面中的图片路径并下载到本地
1.首页是图片处理页面downpic.php <?phpfunction getImage($url,$filename="") { if($url=="" ...
- curl抓取页面时遇到重定向的解决方法
用php的curl抓取网页遇到了问题,为阐述方便,将代码简化如下: <?php function curlGet($url) { $ch = curl_init(); curl_setopt($ ...
- PHP用curl抓取网站数据,仿造IP、伪造来源等,防屏蔽解决方案教程
1.伪造客户端IP地址,伪造访问referer:(一般情况下这就可以访问到数据了) curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-FORWARDED-FOR:1 ...
- PHP cURL抓取网上图片
cURL的底层是由一个命令行工具实现的,用于获取远程文件或传输文件,更多的情况是用来模拟get/post表单提交.也可以用户文件上传,爬取文件,支持FTP/FTPS,HTTP/HTTPS等协议,通俗来 ...
随机推荐
- 基于MATLAB的中值滤波算法实现
在实时图像采集中,不可避免的会引入噪声,尤其是干扰噪声和椒盐噪声,噪声的存在严重影响边缘检测的效果,中值滤波是一种基于排序统计理论的非线性平滑计数,能有效平滑噪声,且能有效保护图像的边缘信息,所以被广 ...
- Lucene 中自定义排序的实现
使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们 ...
- hdu 5067 遍历指定点集最小时间
http://acm.hdu.edu.cn/showproblem.php?pid=5067 贴题解 由于Harry的dig machine是无限大的,而装载石头和卸载石头是不费时间的,所以问题可以转 ...
- CAS实战の简介
一.SSO简介 单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用:而不需要访问每个应用时,都重新输入密码.IB ...
- Delphi for iOS开发指南(1):在Mac上配置你的开发环境
http://cache.baiducontent.com/c?m=9d78d513d99516f11ab7cf690d678c3b584380122ba7a0020fd18438e4732b4050 ...
- JS和C#访问遇到QueryInterface调用出错
在原来的WinForm里,我们只要在窗体类的头部添加属性[System.Runtime.InteropServices.ComVisibleAttribute(true)],然后 webBrowser ...
- python3--django for 循环中,获取序号
功能需求:在前端页面中,for循环id会构不成连续的顺序号,所以要找到一种伪列的方式来根据数据量定义序号 因此就用到了在前端页面中的一个字段 forloop.counter,完美解决 <tbod ...
- RabbitMQ基础入门篇
下载安装 Erlang RabbitMQ 启动RabbitMQ管理平台插件 DOS下进入到安装目录\sbin,执行以下命令 rabbitmq-plugins enable rabbitmq_manag ...
- ASP.NET Core 2 学习笔记(七)路由
ASP.NET Core通过路由(Routing)设定,将定义的URL规则找到相对应行为:当使用者Request的URL满足特定规则条件时,则自动对应到相符合的行为处理.从ASP.NET就已经存在的架 ...
- Spring Boot 学习系列(10)—SpringBoot+JSP的使
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...