精仿今日头条

转载请注明出处:http://blog.csdn.net/Chay_Chan/article/details/75319452

由来篇

当初的梦想

一直都想尝试开发自己还没接触过的某类APP,以前刚入门的时候,就有一个梦想:开发社交类、地图类、新闻类、支付、电商类、直播类、游戏类这些APP。社交类的大二的时候已经开发过一款即时通讯的APP,用的是网易云信的SDK;地图、支付、电商也接触过了;游戏的话做过一个植物大战僵尸的demo,算是Cocos2D的入门;新闻和直播之前公司还没有接到过这些项目的开发,所以一直没机会接触,所以一直很想把当初的梦想实现,做完新闻类和直播类的APP。

今日七月份告别了母校,正式毕业了,同时也辞职了,大二时和同学们一起创建公司接项目做,现在已经一年了,想着出去闯一闯,所以辞去了工作,这个项目是6月份多的时候动工的,那时候下班就挤出时间写代码,用的是目前的流行框架,RxJava + Retrofit + MVP,本来在七月份上旬就接近完成自己定下的那些功能,只是期间遇到一些问题。

遇到的问题

问题一:今日头条封闭了老接口,原先是参考大神 wey ye做过的今日头条,根据他以前抓包知道的接口来获取新闻列表,后台接口都获取不到数据了,所以只好想办法解决,之前虽然有使用过fidder抓包,可是用得不是很熟悉,遇到一些https加密过的数据包就束手无策,后来了解到fidder可以解https的数据包,今日头条的新闻数据获取问题就迎刃而解了;

问题二:新闻数据的规律,新闻列表的item布局有好多种,在没有接口文档的前提下,需要根据返回的json数据进行分析,找出规律,知道根据哪个字段来判断属于哪个布局,这个也是相当耗时间。

问题三:视频解析,原先参考的项目中,用到的解析视频方法,这个时候也莫名失效了,所以只好自己去寻找新的解析视频的方法,找到不少的方法,有的是读取新闻详情页的html页面,通过正则匹配出对应视频的地址,还有其他的一些方法,但是觉得还是不合心意,知道找到了一个解析今日头条视频地址的网站,通过传入详情页的网址就能够获取到对应视频的地址,所以开始抓包获取那个接口,视频解析的问题迎刃而解。

时运不齐,命途多舛

可是问题总是接踵而来,本想着今天可以高高兴兴地写博客,分享自己写的这个开源项目,彼此交流下,谁知早上播放视频的时候,视频地址又解析出错了,此时,我的内心是崩溃的。调试以后才知道原来那个解析视频的接口,作者对接口的访问做了验证,估计是为了防止别人直接调用他的接口,一定要通过他的网站来访问,分析了他的js代码后,发现他接口新增了两个参数,参数名没有什么意义,是"r"和"s","r"是一段随机产生的数字,"s"则是根据 视频地址 + "@" + r拼接后,进行一系列的处理,与运算、左移、右移,然后生成的对应的一端数字,后台应该也是根据这个算法进行验证,验证r和s是否有效。

知道作者新增了验证后,也知道了其加密的js代码,本想将加密的js函数转换成java代码写的方法,可最后发现太过复杂,所以放弃了这个念头,找到了java可以读取js脚本,不过在android中用不了,没有对应的ScriptEngine类,只好通过WebView加载本地的js脚本进行解析
,实现java代码与js互调,然后获取js产生的加密后的哪两个参数"r"和"s"的值。

完工

目前已经完成之前顶下的那些功能,比如新闻的多item布局展示(新闻列表)、视频列表、新闻详情、视频详情、点击页签下拉刷新、查看评论列表等。非常高兴可以做自己喜欢做的项目,并非为了工作而做在,纯粹为了接触一些新的事物,尝试做自己没有开发过的APP,最近也在找新的工作,虽然已经面试了几个工作,但最后还是由于薪资不符合自己的要求以及公司的发展前景,从而拒绝了,觉得找工作不应该求急,应该一直找,找到自己心中心仪的工作,这样工作的时候才会愉快,事半功倍。

介绍

精仿今日头条,数据是抓取今日头条App的数据。使用RxJava + Retrofit + MVP开发的开源项目,仅供学习用途。

项目github地址:https://github.com/chaychan/TouTiao

感谢大神 wey ye,项目中参考到他做过的仿今日头条项目

Apk下载地址

[点击下载体验]

演示截图

首页

home.jpg

视频

video.jpg

微头条

micro.jpg

我的

mine.jpg

gif图

新闻列表、视频列表

[图片上传失败...(image-ea2f64-1516154216596)]

非视频新闻详情页面

[图片上传失败...(image-ce19af-1516154216596)]

查看和保存图片

[图片上传失败...(image-fbbcb1-1516154216596)]

视频播放、视频详情页面

[图片上传失败...(image-512b47-1516154216596)]

使用到的第三方库

现有功能

1.获取各种频道的新闻列表,包括视频和非视频新闻;

2.查看新闻详情,包括视频和非视频新闻的详情;

3.查看新闻评论列表;

4.新闻数据本地存储,已经获取到的新闻数据保存在本地数据库中,上拉加载更多时可查看历史新闻;

5.底部页签点击下拉刷新;

6.视频列表播放中的视频不可见时停止播放。

7.查看和保存图片。(8.23更新)

技术要点

1.新闻数据的抓取和分析,使用fidder抓取,具体使用可参考下面的网址:

http://www.tuicool.com/articles/BJjQZf

2.新闻列表多种Item布局的展示,使用的是BaseRecyclerViewAdapterHelper,ReclerView万能适配器,多布局使用可参考下面的网址:

https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/968

3.视频源地址的解析,原先参照大神 wey ye的解析已经失效,目前是通过今日头条视频解析这个网址解析的,传入新闻详情页地址,获取到对应视频下载地址的json数据。

声明

这个属于个人开发作品,仅做学习交流使用,如用到实际项目还需多考虑其他因素如并发等,请多多斟酌。诸位勿传播于非技术人员,拒绝用于商业用途,数据均属于非正常渠道获取,原作公司拥有所有权利。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 精仿今日头条,数据是抓取今日头条App的数据。使用RxJava + Retrofit + MVP开发的开源项目,仅...
    Veneto_2022阅读 1,382评论 0 0
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,680评论 2 59
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生x阅读 15,967评论 3 119
  • 你那么好,我怎么敢差。 我不想离你越来越远;不想只是成为支持你的千万分之一;不想将来没有靠近你的资本;不想看着你遭...
    奥特曼面包树阅读 140评论 0 0
  • 猴子,它是一种十分聪明、惹人喜爱,还有一点淘气的动物 。 猴子的样子十分可爱。它那玲珑的小面...
    黄_文_冰_阅读 3,184评论 7 4