TAE中FetchUrl服务提供基于http协议的网页抓取。目前TAE系统中有全局 FetchUrl的白名单。如果期望的URL不在全局白名单中,可自主申请App粒度的URL白名单。值得注意的是,HTTP请求必须使用FetchUrl,之外的类似HttpClient之类的API不被允许。
在python中使用云服务 需要引入云服务助手对象
from com.alibaba.appengine.python import PythonServiceHelper
openServiceHelper = PythonServiceHelper()
获取FetchUrl服务对象
fetchUrlService= openServiceHelper.getFetchUrlService ()
fetchUrlService.get(url) 方法
1 2 3 4 5 6 7 8 9 |
/** * 对指定的url,发起HTTP GET请求,获取HTTP相应的内容 * @param url HTTP URL地址 不能为null * @return 响应内容 * @throws FetchUrlNotAllowedException url为非HTTP协议、非白名单域名 * @throws FetchUrlException 操作出错,如连接FetchUrl Server失败 * @throws NullPointerException url参数为null */ |
fetchUrlService.post(url,params) 方法
1 2 3 4 5 6 7 8 9 10 |
/** * @param url HTTP URL地址 不能为null * @param requestParameters 请求参数为dict类型如果为null,则表示空参数 * @return 响应内容 * @throws FetchUrlNotAllowedException url为非HTTP协议、非白名单域名 * @throws FetchUrlException 出错,如连接FetchUrl Server失败 * @throws NullPointerException url参数为null */ * 对指定的url,发起HTTP POST请求,获取HTTP相应的内容,请求参数编码默认为 UTF-8 |
fetchUrlService.post(url,params,charset) 方法
1 2 3 4 5 6 7 8 9 10 11 |
/** * 对指定的url,发起HTTP POST请求,获取HTTP相应的内容 * @param url HTTP URL地址 不能为null * @param requestParameters 请求参数Map如果为null,则表示空参数 * @param parameterCharset 请求参数的字符编码,取值范围 UTF-8 | GBK | ISO-8859-1,默认值为 UTF-8 * @return 响应内容 * @throws FetchUrlNotAllowedException url为非HTTP协议、非白名单域名 * @throws FetchUrlException 出错,如连接FetchUrl Server失败 * @throws NullPointerException url参数为null */ |
为了规范TAE中isv对淘宝站内站外的域名访问情况,后面FetchUrl服务的全局白名单只留下下面四个:
api.weibo.com
eco.taobao.com
login.taobao.com
oauth.taobao.com
其它需要访问的域名配置到对应应用的白名单中,需要isv反馈一下哪个应用访问了哪个域名,只要是合理的我们就会给他配置到对应应用的白名单里面。
反馈格式:isv淘宝nick, TAE应用名(域名) ,需要访问的非公共白名单域名,应用场景。按照格式提交问题到://open.taobao.com/support/create_or_edit_problem.htm?spm=0.0.0.0.y72ndX
针对优站业务大家要申请调用白名单以外的域名,请发邮件( lingyou@taobao.com)申请,邮件中请说明优站域名,要通过FetchURL调用的域名,以及使用场景。灵佑直接负责处理申请,1-3个工作日给大家邮件回复,其他疑问直接可以给灵佑发旺旺。
from com.alibaba.appengine.python import PythonServiceHelper
openServiceHelper = PythonServiceHelper()
fetchUrlService = openServiceHelper.getFetchUrlService()
res = fetchUrlService.get("http://www.taobao.com")
parameter = {"username": "tae", "password":"jae"}
res = fetchUrlService.post("https://login.taobao.com/member/login.jhtml", parameter)