另類新浪微博基本數(shù)據(jù)采集方法

0x00 前言

有同學(xué)評論說之前繞過新浪訪客系統(tǒng)的方法不能用了,我測試了一下华嘹,確實不能用了吧趣。原因很簡單,新浪現(xiàn)在強制登錄耙厚,沒有cookie就是不行强挫,即便是搜索引擎的爬蟲也不行。

現(xiàn)在用谷歌搜索出來的結(jié)果是這個樣子的

現(xiàn)在的
現(xiàn)在的

和之前的對比一下

以前的
以前的

百度同樣也被ban了

呵呵
呵呵

快照里同樣也是空的

那么這是不是意味著我們即使想采集一些簡單的信息(網(wǎng)頁標(biāo)題颜曾、微博正文等等)也要使用模擬登錄或者新浪開放平臺API這樣復(fù)雜的方法纠拔?

完全沒必要!只要你仔細(xì)觀察觀察泛豪,方法其實非常簡單~

0x01 從子域名入手

觀察第一張圖稠诲,可以發(fā)現(xiàn)下面幾個結(jié)果里面是有內(nèi)容的侦鹏,而其中一個域名為tw.weibo.com,這說明新浪微博的其他子域名是沒有什么限制策略的臀叙,那么這一來就很簡單了略水,我們只要把weibo.com域名下的鏈接做一下轉(zhuǎn)換,去訪問對應(yīng)tw.weibo.com下的頁面即可拿到想要的數(shù)據(jù)劝萤。

這里我把新浪的一些子域名列出來供大家參考:

那么如何把weibo.com域名下的鏈接轉(zhuǎn)換成tw.weibo.com下的對應(yīng)頁面鏈接呢渊涝?簡單在前面加一個tw是不行的,還需要對后面的一些參數(shù)進行轉(zhuǎn)換床嫌。

0x02 參數(shù)轉(zhuǎn)換

我們以tw.weibo.com為例進行說明跨释。簡單起見,這里只介紹新浪微博上的兩種鏈接形式

用戶主頁鏈接

常見的用戶主頁鏈接就下面兩種形式厌处,后面一堆亂七八糟的參數(shù)可以省略……

對應(yīng)的tw.weibo.com的鏈接為

用戶主頁的鏈接處理起來很簡單鳖谈,直接加上tw即可

某條微博鏈接

某條微博的鏈接如下,同樣省略了后面的無關(guān)參數(shù)

對應(yīng)的tw.weibo.com的鏈接為

如果對新浪開放平臺的API不陌生的話阔涉,可知2803301701為用戶的uid缆娃,uid是一個用戶的唯一標(biāo)識。

CeaOU15IT為這條微博的mid瑰排,與之相對應(yīng)的還有一個id贯要,id是一條微博的唯一標(biāo)識,由于id比較長椭住,為了縮短url對id進行了轉(zhuǎn)換變成了mid崇渗。CeaOU15IT對應(yīng)的id3833781880260331

那么問題來了,這個id如何計算呢函荣?如果是以前显押,可以直接調(diào)用新浪的API進行轉(zhuǎn)換,但是現(xiàn)在新浪對這個簡單的API也是強制授權(quán)傻挂,而且還有次數(shù)限制……

好在這個轉(zhuǎn)換的原理并不復(fù)雜乘碑,就是一個62進制的轉(zhuǎn)換,把下面的代碼保存為base62.py金拒,后面的過程要用到


ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

def rsplit(s, count):

f = lambda x: x > 0 and x or 0

return [s[f(i - count):i] for i in range(len(s), 0, -count)]

def id2mid(id):

result = ''

for i in rsplit(id, 7):

str62 = base62_encode(int(i))

result = str62.zfill(4) + result

return result.lstrip('0')

def mid2id(mid):

result = ''

for i in rsplit(mid, 4):

str10 = str(base62_decode(i)).zfill(7)

result = str10 + result

return result.lstrip('0')

def base62_encode(num, alphabet=ALPHABET):

"""Encode a number in Base X

`num`: The number to encode

`alphabet`: The alphabet to use for encoding

"""

if (num == 0):

return alphabet[0]

arr = []

base = len(alphabet)

while num:

rem = num % base

num = num // base

arr.append(alphabet[rem])

arr.reverse()

return ''.join(arr)

def base62_decode(string, alphabet=ALPHABET):

"""Decode a Base X encoded string into the number

Arguments:

- `string`: The encoded string

- `alphabet`: The alphabet to use for encoding

"""

base = len(alphabet)

strlen = len(string)

num = 0

idx = 0

for char in string:

power = (strlen - (idx + 1))

num += alphabet.index(char) * (base ** power)

idx += 1

return num

if __name__ == '__main__':

print mid2id('CeaOU15IT')

print id2mid('3833781880260331')

0x03 繁簡轉(zhuǎn)換

由于我們訪問的頁面是微博臺灣站兽肤,因此頁面上的內(nèi)容都是繁體中文的,因此需要做下轉(zhuǎn)換绪抛,比較好的就是大名鼎鼎的opencc了资铡,可以到這里下載安裝,使用起來也非常簡單~

0x04 實戰(zhàn)

廢話不多說幢码,直接看代碼吧~


# -*- coding: utf-8 -*-

import requests

from bs4 import BeautifulSoup

import re

import opencc

import base62

rawurl = "http://weibo.com/2803301701/CeaOU15IT"

cc = opencc.OpenCC("t2s")

p = re.compile(r"weibo\.com/(\d+)/(\w+)")

m = re.findall(p,rawurl)

if m:

uid = m[0][0]

mid = m[0][1]

id = base62.mid2id(mid)

url = "http://tw.weibo.com/{0}/{1}".format(uid,id)

print u"微博臺灣站鏈接:{0}".format(url)

user_agent = {'User-agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'}

r = requests.get(url,headers=user_agent)

soup = BeautifulSoup(r.text)

name = soup.find("div","name")

t_name = name.h1.a.text

s_name = cc.convert(name.h1.a.text)

link = name.h1.a["href"]

weibotext = soup.find("p",id="original_text")

t_weibotext = weibotext.text.strip()

s_weibotext = cc.convert(weibotext.text.strip())

print u"繁體中文版-->\n用戶:{0}\t用戶主頁:{1}\n微博內(nèi)容:{2}".format(t_name,link,t_weibotext)

print u"簡體中文版-->\n用戶:{0}\t用戶主頁:{1}\n微博內(nèi)容:{2}".format(s_name,link,s_weibotext)

# 輸出

# 微博臺灣站鏈接:http://tw.weibo.com/2803301701/3833781880260331

# 繁體中文版-->

# 用戶:人民日報    用戶主頁:http://tw.weibo.com/rmrb

# 微博內(nèi)容:【「最有情懷辭職信」當(dāng)事人:辭職非衝動 會對未來負(fù)責(zé)】「世界那麼大笤休,我想去看看≈⒏保」10字辭職信當(dāng)事人店雅、河南省實驗中學(xué)女教師顧少強19日表示政基,辭職並非衝動之舉,而是經(jīng)過理性考慮闹啦【诿鳎「我會對未來的人生負(fù)責(zé)∏戏埽」採訪中荐健,顧少強不時強調(diào)「每個人都有選擇自己生活方式的權(quán)利」。http://t.cn/RAOeU6q

# 簡體中文版-->

# 用戶:人民日報    用戶主頁:http://tw.weibo.com/rmrb

# 微博內(nèi)容:【「最有情懷辭職信」當(dāng)事人:辭職非沖動 會對未來負(fù)責(zé)】「世界那么大琳袄,我想去看看江场。」10字辭職信當(dāng)事人窖逗、河南省實驗中學(xué)女教師顧少強19日表示扛稽,辭職并非沖動之舉,而是經(jīng)過理性考慮滑负。「我會對未來的人生負(fù)責(zé)用含“剑」采訪中,顧少強不時強調(diào)「每個人都有選擇自己生活方式的權(quán)利」啄骇。http://t.cn/RAOeU6q

0x05 總結(jié)

又是子域名痴鳄,在很多漏洞和入侵的過程中,子域名和旁站都扮演著非常重要的角色缸夹,這是不是也給我們敲響了警鐘呢痪寻?在升級一些安全策略的時候,有沒有覆蓋到子域名上呢虽惭?

從另一角度來說橡类,只要你善于挖掘,沒有什么系統(tǒng)是堅不可摧的~

我的人個博客地址:http://bindog.github.io/blog/2015/04/20/other-way-to-collect-sina-data芽唇,排版更佳哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顾画,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匆笤,更是在濱河造成了極大的恐慌研侣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炮捧,死亡現(xiàn)場離奇詭異庶诡,居然都是意外死亡,警方通過查閱死者的電腦和手機咆课,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門末誓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扯俱,“玉大人,你說我怎么就攤上這事基显≌合牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵撩幽,是天一觀的道長库继。 經(jīng)常有香客問我,道長窜醉,這世上最難降的妖魔是什么宪萄? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮榨惰,結(jié)果婚禮上拜英,老公的妹妹穿的比我還像新娘。我一直安慰自己琅催,他們只是感情好居凶,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藤抡,像睡著了一般侠碧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缠黍,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天弄兜,我揣著相機與錄音,去河邊找鬼瓷式。 笑死替饿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贸典。 我是一名探鬼主播视卢,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼廊驼!你這毒婦竟也來了腾夯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蔬充,失蹤者是張志新(化名)和其女友劉穎蝶俱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饥漫,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡榨呆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了庸队。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片积蜻。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡闯割,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出竿拆,到底是詐尸還是另有隱情宙拉,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布丙笋,位于F島的核電站谢澈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏御板。R本人自食惡果不足惜锥忿,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怠肋。 院中可真熱鬧敬鬓,春花似錦、人聲如沸笙各。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杈抢。三九已至希痴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間春感,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工虏缸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鲫懒,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓刽辙,卻偏偏與公主長得像窥岩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宰缤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程颂翼,因...
    小菜c閱讀 6,358評論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)慨灭,斷路器朦乏,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 昨天居然靈光一現(xiàn) 腦子里出現(xiàn)一部小說的構(gòu)造 我動筆去寫 眼淚卻止不住地流 我沒法完成一件事 只好擱置下來 許多細(xì)節(jié)...
    迷惘之鄉(xiāng)閱讀 148評論 0 0
  • GreenDao 初始化: public voidinitDB(Context context,String db...
    kecai閱讀 8,807評論 1 2