我在Google Cloud(GC)的Google App Engine(GAE)项目中托pipe了一个URL缩短器/stream量分析服务。 当提交一个URL缩短时,它会执行一个Python urllib2.urlopen来提取页面并获取它的标题,这是用来生成一个包含缩短链接的社交媒体文章。 有些网站在urllib2.urlopen命令中返回403 Forbidden,无法从页面标题中生成社交媒体post正文。 请注意,这只会在尝试加载页面以获取页面标题时发生; 生成的缩短url在我的浏览器中正常工作,正确地在目标网页上正确显示302。
我的猜测是,来自GC IP范围的页面请求被我试图链接到的网站列入黑名单,作为可能的bot或其他非人类或恶意stream量的来源。
GC是否有可以申请的白名单服务,还是由其他原因造成的?
根据出站请求 ,App Engine使用URL提取服务发出出站请求。 您的应用程序的请求实际上是通过Google的url抓取服务进行代理的。 其他网站通常可以很容易地识别这些请求的来源。 另外,App Engine会将一个标识符string附加到User-Agent标头,以允许服务器根据请求标头标识App Engine请求。
没有可用的白名单服务,这将允许您的App Engine应用程序获取URL并获取2xx响应。 请求一个给定的URL并为其内容的一部分parsingHTML响应通常被称为抓取,而大多数大型网站对于这种types的交互都有严格的策略。
Facebook的服务条款明确禁止完全陈述以下内容:
未经我们事先许可,您将不会使用自动方式(如收获机器人,机器人,蜘蛛或刮板)收集用户的内容或信息,或以其他方式访问Facebook。
Facebook的确拥有Graph API ,这是获取数据进出Facebook社交图谱的主要方式。 这需要注册一个应用程序,并获得一个app secret 。 通过这种方式,您可以为Graph API调用提供appsecret_proof以进行身份validation。 然后,通过提供外部Facebook URL,您可以使用URL调用来获取Facebook对象(共享,评论等)。
大多数其他社交媒体网站也有自己的API。 这是因为他们想要决定外部应用程序如何访问他们的内容和用户给他们的内容。 如果您要访问其资源,则必须确保尊重每个站点的服务条款。