Twitter广告平台的私有API

P romoted 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值