【圖解】Python模擬登錄新浪微博

上一篇文章《Scrapy用Cookie實(shí)現(xiàn)模擬登錄》完成了用Cookie實(shí)現(xiàn)模擬登錄,繞開了用戶名搂妻、密碼和驗(yàn)證碼登錄的步驟砸烦。今天來比較一下以常規(guī)驗(yàn)證(用戶名密碼+驗(yàn)證碼)的方式實(shí)現(xiàn)新浪微博的模擬登錄,看看實(shí)現(xiàn)的過程中有哪些要注意的點(diǎn)。

一炼蛤、分析登錄URL和表單字段

為了更好分析登錄驗(yàn)證過程,找到登錄提交的URL和表單字段,選取了新浪微博手機(jī)版的頁(yè)面進(jìn)行追蹤分析恩静,采用的工具是chrome開發(fā)者工具Network功能。

手機(jī)版登錄頁(yè)面

1蹲坷、查看源代碼驶乾,了解基本表單字段
通過查看登錄頁(yè)源代碼,了解登錄的url循签,用戶名字段mobile, 密碼字段password_9771(是password加上一個(gè)隨機(jī)數(shù))级乐,還有一些隱藏字段vk, capId,以及驗(yàn)證碼县匠。

2风科、Network追蹤登錄過程
1)登錄的完整表單字段:


Form Data記錄
  • 這些字段名和值需要先從登錄頁(yè)面抓热雎帧:
    • 密碼字段名不是一個(gè)固定的值,password+隨機(jī)數(shù)
    • vk, capId是隱藏字段贼穆,登錄時(shí)必須
    • code 是驗(yàn)證碼

2)登錄的全過程:
新浪微博的登錄過程题山,第一步是提交用戶名密碼及其他參數(shù),POST方法故痊,后面經(jīng)過4次重定向顶瞳,完成登錄。


查看新浪微博登錄重定向過程

重定向都是通過location發(fā)送愕秫,get方法慨菱。理論上登錄流程,重定向的過程不需要我們關(guān)心戴甩,但是Scrapy在發(fā)送登錄請(qǐng)求時(shí)符喝,會(huì)遇到種種問題,需要調(diào)試時(shí)甜孤,了解整個(gè)過程就很關(guān)鍵协饲。

二、抓取登錄表單及參數(shù)

1课蔬、先發(fā)送一個(gè)登錄url請(qǐng)求:start_requests()方法

def start_requests(self):

        return [Request("http://login.weibo.cn/login/", meta={'cookiejar': 1}, callback=self.pre_login)]

2囱稽、抓取登錄的表單字段:pre_login()方法

   def pre_login(self,response):


        selector = Selector(response)
        pwdname =selector.xpath('//input[@type="password"]/@name').extract()[0]
        vk = selector.xpath('//input[@name="vk"]/@value').extract()[0]
        imgsrc = selector.xpath('/html/body/div[2]/form/div/img[1]/@src').extract()[0]
        index = imgsrc.find('cpt=')
        capId = imgsrc[index+4:]

        action = selector.xpath('/html/body/div[2]/form/@action').extract()[0]
        action = 'http://login.weibo.cn/login/'+action

        # ... ... next, 完成驗(yàn)證碼驗(yàn)證,構(gòu)造表單參數(shù)...

三二跋、完成驗(yàn)證碼的驗(yàn)證

在這里战惊,我沒有采用復(fù)雜的圖片驗(yàn)證算法庫(kù),而是直接在控制臺(tái)上把驗(yàn)證碼的URL輸出來扎即,訪問一下吞获,手工填入的方式,codeimg = raw_input('please input image:'), 簡(jiǎn)單粗暴谚鄙、快速準(zhǔn)確各拷。

查看驗(yàn)證碼

四、構(gòu)造表單參數(shù)闷营,提交登錄請(qǐng)求

         data = {'mobile':'name@126.com',    #你的微博帳號(hào)
                pwdname: '123456789',     #你的密碼
                'code': codeimg,    #獲取的驗(yàn)證碼
                'remember':'',
                'backURL':'http://weibo.cn/u/2508944032',   #登錄后要訪問url
                'backTitle':u'手機(jī)新浪網(wǎng)',
                'tryCount':'',
                'vk':vk,            #隱藏字段
                'capId':capId,  #隱藏字段
                'submit':u'登錄'}
yield FormRequest(url=action,meta={'cookiejar': response.meta['cookiejar']},headers=self.headers,formdata=data,callback=self.parse_item)

注意這里使用了FormRequest直接提交登錄url和表單參數(shù)烤黍,而不是用FormRequest.from_response(),因?yàn)檎?qǐng)求的登錄url不一樣傻盟。Scrapy官網(wǎng)FormRequest.from_response()方法模擬用戶登錄》

OK速蕊,使用Scrapy完成新浪微博驗(yàn)證登錄。在實(shí)現(xiàn)的過程也遇到不少問題娘赴,查看錯(cuò)誤提示规哲,不斷調(diào)試。
可能是因?yàn)樾吕宋⒉┑卿泤?shù)和流程的更改诽表,大家可以對(duì)比一下網(wǎng)絡(luò)上的代碼以及Scrapy官網(wǎng)上的說明唉锌。

下一步就是數(shù)據(jù)提取隅肥、保存。之前文章都有講過袄简。

控制臺(tái)信息

Github地址 https://github.com/ppy2790/weibo.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腥放,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痘番,更是在濱河造成了極大的恐慌捉片,老刑警劉巖平痰,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汞舱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宗雇,警方通過查閱死者的電腦和手機(jī)昂芜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赔蒲,“玉大人泌神,你說我怎么就攤上這事∥枋” “怎么了欢际?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)矾兜。 經(jīng)常有香客問我损趋,道長(zhǎng),這世上最難降的妖魔是什么椅寺? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任浑槽,我火速辦了婚禮,結(jié)果婚禮上返帕,老公的妹妹穿的比我還像新娘桐玻。我一直安慰自己,他們只是感情好荆萤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布镊靴。 她就那樣靜靜地躺著,像睡著了一般链韭。 火紅的嫁衣襯著肌膚如雪偏竟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天梧油,我揣著相機(jī)與錄音苫耸,去河邊找鬼。 笑死儡陨,一個(gè)胖子當(dāng)著我的面吹牛褪子,可吹牛的內(nèi)容都是我干的量淌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼嫌褪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼呀枢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笼痛,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤裙秋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缨伊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摘刑,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年刻坊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枷恕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谭胚,死狀恐怖徐块,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灾而,我是刑警寧澤胡控,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站旁趟,受9級(jí)特大地震影響昼激,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轻庆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一癣猾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧余爆,春花似錦纷宇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至桩砰,卻和暖如春拓春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亚隅。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工硼莽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人煮纵。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓懂鸵,卻偏偏與公主長(zhǎng)得像偏螺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匆光,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理套像,服務(wù)發(fā)現(xiàn),斷路器终息,智...
    卡卡羅2017閱讀 134,699評(píng)論 18 139
  • HTML表單 在HTML中夺巩,表單是 ... 之間元素的集合,它們?cè)试S訪問者輸入文本周崭、選擇選項(xiàng)柳譬、操作對(duì)象等等,然后將...
    蘭山小亭閱讀 3,419評(píng)論 2 14
  • 4 創(chuàng)建一個(gè)社交網(wǎng)站 在上一章中休傍,你學(xué)習(xí)了如何創(chuàng)建站點(diǎn)地圖和訂閱征绎,并且為博客應(yīng)用構(gòu)建了一個(gè)搜索引擎蹲姐。在這一章中磨取,你...
    lakerszhy閱讀 2,190評(píng)論 0 7
  • 第二部分 Blog例子 第八章 用戶驗(yàn)證 大部分程序需要追蹤用戶身份。當(dāng)用戶連接到程序柴墩,通過一系列步驟使自己的身份...
    易木成華閱讀 1,295評(píng)論 0 4
  • 喧鬧的街頭充斥著雜亂無章的聲音忙厌,像是指尖從耳膜劃過。刺耳江咳。尖利逢净。我佇立在站牌前,靜候車來歼指。 公交車淌過昨夜未干的洼...
    安詳?shù)您?/span>閱讀 374評(píng)論 0 0