一点资讯爬虫分析以及js参数破解

文章内容

主页预览
文章内容直接get主页就可以拿到,页面内容太长,这里就不贴具体内容了,chrome自行查看。URL结构也非常简单,只需要修改后面的文章id就可以。


搜索界面

============ 2019年8月10日更新
一点资讯的搜索接口有调整,新的搜索接口:
Post 请求
请求url:

https://a1.go2yd.com/Website/channel/news-list-for-keyword?display=%E4%B8%B4%E6%B5%B7%E5%85%A8%E5%B8%82%E8%A2%AB%E6%B7%B9&word_type=token&ctype=overall&cstart=0&cend=10&refresh=1&fields=ctype&fields=url&fields=dtype&fields=image&fields=image_urls&fields=title&fields=source&fields=date&fields=comment_count&fields=like&channel_fake=suggest&version=999999&appid=web_mixapp&platform=1&distribution=com.yidianzixun

参数中的display是搜索的关键词
请求头:

user-agent:Mozilla/5.0 (Linux; Android 8.1.0; Redmi 5A Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 hap/1.5/xiaomi com.miui.hybrid/1.5.0.1 com.yidian.hybrid.main/1.6.6 ({"packageName":"com.xiaomi.market","type":"other","extra":{}})
content-type:application/json; charset=utf-8
content-length: 2
accept-encoding:gzip
cookie:JSESSIONID=constant-session-1
image.png

============ 旧版搜索(已经不能使用)
搜索界面预览 (请使用chrome的手机模拟)

搜索接口
这个接口返回的是输入框输入之后提示出来的信息,这个其实要比点击搜索之后给出的要好,因为这个里面给出的信息很多。大概结构是这样:

image.png

注意到可能提示出不同类型的东西,重点看type,type有5个类型:

  • keyword:用户输入的关键词
  • sugkwd: suggest keyword
  • media: 号主
  • user_channel:用户自建频道
  • category:可以看成是官方的频道

这里备用一下完整的参数请求,实际上大胆去掉后面两个参数,并不影响我们获取内容。

http://www.yidianzixun.com/home/q/search_channel?word=XXX&appid=web_yidian&_=1555302409064

热搜(10个)

在搜索界面会提示当前的热搜关键词, 接口页面:
热搜接口

http://www.yidianzixun.com/home/q/hot_search_keywords?appid=web_yidian&_=1555306597594

首页推荐

基础url

http://www.yidianzixun.com/home/q/news_list_for_channel

请求参数

channel_id: best    
cstart: 10
cend: 20
infinite: true
refresh: 1
__from__: wap
docids: 0LjEONKq,0LatpVAx,V_02ccJplc,0K16WkK2,0Lh5Rowk
_spt: yz~eaodhoy~;:8:
appid: web_yidian
_: 1555308767037

我们不断的下拉,查看异步请求,filter设置为 channel?
然后对比请求发现参数的规律如下

  • channel_id: 频道id, 推荐页面为best, 其他页面为数字串
  • cstart: 开始页面
  • cend: 停止页面
  • _spt: 一个略微变化的参数

其他参数都是固定值。所以我们需要追踪_spt这个参数。全局搜索一下_spt,只有一个文件中发现了这个字符串

定位到这个函数中function(e, t, i), 我们给函数打上一堆断点,然后F5刷新页面,稍等一会,页面会加载到断点的位置暂停,我们按F8可以继续执行。然后不断的按下F8,我们可以看到各个变量的值,
执行到59行时:

t.encodeToken = function(e, t, i, n) 

这时候拿到channel_id,保存在变量t中,这里拿到的t是best,当然,不同的广场标签对应channel不一样。这个id明文传输在参数中。
继续F8,我们开始进入到第一个循环中,变量o的初始值为sptoken,循环会把arguments中除了第一个字符串全部追加的o的后面,arguments中有四个字符串


image.png

看下这几个字符串都是什么,

  • Argument[0] : 资源地址,不用看,这里不需要
  • Argument[1]:很好猜,就是channel_id
  • Argument[2]:这个不清楚
  • Argument[3]:这个不清楚

现在就差后面两个参数,我们不断上划加载数据然后重复F8的过程看看数据的变化:

image.png

可以看到后面两个参数就是起止数目,参数中的cstart和cend。于是到此为止,可以说基本破解成功了。我们写个python函数:

def get_spt(channel_id, cstart, gap=10):
    """
    Get sptoken for yidian main pain, which is _sp param in request header.
    :param start: cstart param in request header.
    :param channel_id: channel_id param in request header.
    :return: sptoken string
    """
    cend = cstart + gap
    s = 'sptoken' + str(channel_id) + str(cstart) + str(cend)
    spt = ''
    for c in s:
        tmp = 10 ^ (ord(c))
        spt = spt + chr(tmp)
    return spt

对比一下网站的参数:


image.png

image.png

搞定!


个人首页

这里有个地方很有意思啊, 该网站对web的访问控制是通过明文参数控制的

#这个里面的文章都会连接到App下载界面
http://www.yidianzixun.com/channel/m596204?appid=&sharedl=0
# 这个就可以点开文章
http://www.yidianzixun.com/channel/m596204

个人首页
然后,链接地址就出现在了对应的标签中。很容易找到。


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

推荐阅读更多精彩内容