发布时间:2022-08-09 文章分类:编程知识 投稿人:赵颖 字号: 默认 | | 超大 打印
FetchURL
  • 服务概要
  • 应用场景
  • 使用指南
  • 抓取页面
  • 发起POST请求
  • 错误码参考
  • 服务限制与配额
  • 服务限制
  • 分钟配额
  • 常见问题
  • 服务概要
  • 应用场景
  • 使用指南
  • 服务限制与配额
  • 常见问题

服务概要

特别说明:SAE目前已经完全兼容cURL模块(内部用FetchURL实现),所以用户可以使用cURL*函数进行HTTP请求,兼容用户以往的使用习惯,使用户的学习成本降为零。所以我们推荐用户使用cURL*函数,以下关于FetchURL的文档仅供老用户参考。

FetchURL是SAE为开发者提供的分布式网页抓取服务,用来同步的抓取http页面,FetchURL针对国内的网络的做了优化,内部有调度系统,尽可能保证用户快速的抓取到目标页面。在SAE上使用FetchURL非常简单,只需要调用sae_std_lib中的几个简单的函数即可。但需要特别注意的是,为了平台安全性,SAE对FetchURL做了一些限制:

  • http连接超时<=5秒
  • send超时<=15秒
  • read超时<=20秒
  • http header禁用项:Content-Length、Host、Vary、Via、X-Forwarded-For、FetchUrl、AccessKey、TimeStamp、Signature、AllowTruncated、ConnectTimeout、SendTimeout、ReadTimeout

另外,SAE规定FetchURL的user-agent默认包含SAE/fetchurl-accesskey,其中accesskey是用户的accesskey,用户可以自行添加user-agent。Referer用户也可以自行定义。

应用场景

FetchURL适用的场景主要有:

1. 抓取http资源
2. 发送http rest请求
3. FetchURL支持https,并且支持重定向

使用指南

抓取页面

$f = new SaeFetchurl();

$content = $f->fetch('http://sina.cn');

发起POST请求

$f = new SaeFetchurl();
$f->setMethod('post');
$f->setPostData( array('name'=> 'easychen' , 'email' => 'easychen@gmail.com' , 'file' => '文件的二进制内容') );
$ret = $f->fetch('http://photo.sinaapp.com/save.php');
//抓取失败时输出错误码和错误信息
if ($ret === false)

var_dump($f->errno(), $f->errmsg());

错误码参考

errno: 0 成功
errno: 600 fetchurl 服务内部错误
errno: 601 accesskey 不存在
errno: 602 认证错误,可能是secretkey错误
errno: 603 超出fetchurl的使用配额
errno: 604 REST 协议错误,相关的header不存在或其它错误,建议使用SAE提供的fetch_url函数
errno: 605 请求的URI格式不合法

errno: 606 请求的URI,服务器不可达

服务限制与配额

SAE设置服务限制和配额的目的是为了防止个别用户攻击和滥用,从而在公有云计算平台上保证绝大多数开发者的正常使用。

1. 服务限制和配额设定是在门户网站新浪自身长期运维的基础上经过严格计算得出的,所以正常使用一般不会出现问题。经过SAE实际统计,99%的应用不会受到任何影响

2. 当您发现您的某项服务超过限制或者超配时,请先阅读相关文档确认限制和配额的具体数值,再检查自己的程序是否存在使用不当的情况,如果仍然解决不了,可以和SAE官方联系,saeadmin@sina.cn

服务限制

connect_timeout 5秒
send_timeout 15秒
read_timeout 20秒
抓取文件大小 8MB
禁用头,这些头用户无法修改 Content- Length、Host、Vary、Via、X-Forwarded-For、FetchUrl、AccessKey、TimeStamp、 Signature、AllowTruncated、ConnectTimeout、SendTimeout、ReadTimeout

分钟配额

运行在SAE上的应用(App)将会消耗平台资源,为保证各App不互相影响,我们引入了*分钟配额*的概念,即:在每分钟内每个应用的各个服务所消耗 的 资源的速度。比如,当平台中的某个应用的MySQLl服务一分钟内累计请求数达到10万,或者流出宽带超过200M,我们将会立即禁掉该应用的MySQL 服务,禁用五分钟后,会自动恢复,避免影响到SAE平台的稳定性。服务因为超过“分钟配额”而被禁用时,会在“服务状态”看到该服务被禁用的原因是:OverMinuteQuota

服务 请求数 cpu时间 流入带宽 流出带宽
Fetchurl 100,000 NA 200MB 200MB

常见问题

SAE平台出口IP:

220.181.129.126

220.181.129.121

220.181.136.229

220.181.136.230

http接口方需要IP授权可以进行相应的设置。