开发者社区> horky> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Twitter广告平台的私有API

简介: Promoted Tweets是Twitter的一个广告平台。本文作者是发现在Twitter官方的应用中并没有显示一些广告,而决定分析Twitter是不是做了什么手脚。
+关注继续查看
Promoted Tweets是Twitter的一个广告平台。本文作者是发现在Twitter官方的应用中并没有显示一些广告,而决定分析Twitter是不是做了什么手脚。没有详细的步骤,只是可以了解一些工具的使用和Twitter的一个小动作。
 

Mac上的Twitter有些奇怪的行为: Timeline上的一些内容被过滤掉了. 下图就是一个对比,相较网页版本,其中"howaboutwe.com" 的内容没有在应用程序中显示出来。

 
这是一个Bug,还是Twitter自己打破了规则? 为什么官方的应用与Web Client得到了不同的数据?
Twitter是不是使用了一些自己未公开的API? 为了找到答案,我对Twitter动了手术刀。

Reverse Engineering Twitter.app

Twitter Sleuthing 101

  1. 使用class-dump 先进行反汇编,提取声明信息.
  2. 使用Hopper.app 找到处理HTTP请求的代码.
  3. 使用GDB检测对API的网络响应.
  4. 使用Rested for Mac比对两次获取数据时使用的API.

幸运的是这个应用是纯粹使用Objective C编写的, 就可以使用class-dump了解Twitter.app的基本内容以及如何设计的。首先,就发现其中有一个TwitterStatus可能和之前的过滤行为有关。注意其中一个是否promoted的标志位 (命名的重要性):

@interface TwitterStatus : NSObject <...>
{
NSDate *lastUpdated;
...
struct {
...
unsigned int isPromoted:1;

我们就可以假定Twitter就是从API服务器端收到promoted tweets内容,并使用这个标志位加以区分的。

分析数据流(On to the Data Stream)

通过Hopper.app, 一两小时后,就找到了响应网络数据的代码. 名字是[ABHTTPRequest connection:DidReceiveResponse:]。 



在使用GDB (Hopper提供了一个GDB Server可以和Hopper共同使用进行调试)在Twitter.app中设定断点,然后可以看到从服务器拿到什么数据。

在Terminal运行GDB:

> cd /Applications/Twitter.app/Contents/MacOS/
> gdb --arch=i386

然加加载Twitter并设定断点:

> (gdb) exec-file Twitter
> (gdb) b *0x6dec3
> (gdb) commands
> x/s $eax
> end
> (gdb) set print elements 0
> (gdb) r

首选你必须知道Twitter是使用XML传递数据的. API Server先是回应你的用户信息,然后发送你的Timeline feed内容。和网络版本比对,发现其中的内容确实不同。


Is This an Undocumented API?
到底是Twitter.app没有去收那些数据?还是API Server没有返回那些数据呢?

使用Rested for Mac, 可以快速的拉回我的Timeline中的内容。在下面的结果里可以看到API并没有回什么promoted tweets.



结论: Twitter有私有API (Conclusion: Twitter Has A Secret Feed For Promoted Tweets)
Twitter的开发页面中的FAQ显示, "从March 12, 2012起,第三方应用程序将不再有Twitter promoted products相关服务的API (there is no Advertising API for serving Twitter's promoted products in third party applications)." 也就是promoted tweets应当出现在所有使用API的应用中。很明显,事实并非如此。

为了移动广告这块大饼(2014年Twitter的广告收到可以达到5.4亿美金),Twitter并没有像他们宣传的那样,让开发者分一杯羹。 你知道你的promoted tweets去哪了吗?

Michael Schonfeld is head of developer relations at Dwolla, a service that empowers anyone with an Internet connection to send money simply. Follow Michael Schonfeld and his brotherDaniel Schonfeld on Twitter.

原文地址:http://www.fastcompany.com/3002016/reverse-engineering-twitter-solve-advertising-mystery

转载请注明出处:http://blog.csdn.net/horkychen

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ASP.NET Core Web API 帮助页
ASP.NET Core Web API 帮助页
0 0
一文概览设计Web API 中的细节
一文概览设计Web API 中的细节
0 0
借助 Web Animations API 实现一个鼠标跟随偏移动画
借助 Web Animations API 实现一个鼠标跟随偏移动画
0 0
WebAPI学习(一)——创建Web API程序
WebAPI学习(一)——创建Web API程序
0 0
几种不常用Web API(振动、重力感应、联网状态、系统电量信息、页面可见性、canvas转base64、监听屏幕旋转、元素全屏显示)
navigator对象中有一些不常用的API,以下主要介绍vibrate振动,deviceorientation重力感应,online联网状态,getBattery系统电量信息,visibilitychange页面可见性,toDataURL(canvas转base64),orientationchange监听屏幕旋转和fullScreen元素全屏显示。
0 0
+关注
horky
Web及移动开发技术
文章
问答
文章排行榜
最热
最新
相关电子书
更多
CUDA Math API
立即下载
阿里云 API 精选手册(Alibaba Cloud API Playbook)
立即下载
重保场景及API安全指南
立即下载