談?wù)勁老x-模擬登錄思路

個人博客: 斯科特安的時間

最近在做的sideproject,需要網(wǎng)絡(luò)上的文章數(shù)據(jù)。于是順便學(xué)習(xí)了下爬蟲技術(shù),也算是有些心得體會。寫下來分享給剛?cè)肟拥男氯恕?/p>

怎么理解模擬登錄?

怎么理解模擬登錄?
把這句話補(bǔ)全就是: 怎么(讓機(jī)器)模擬(人在瀏覽器上的行為)登錄(指定的網(wǎng)站)。
那么這個問題實際上問的是: 人通過瀏覽器登錄網(wǎng)站時,瀏覽器為我們做了哪些事情。
那么我們需要做的只有:寫一個腳本,讓這個腳本模擬瀏覽器的行為,做我們希望它做的事情。

有興趣參考:
當(dāng)在瀏覽器地址欄輸入一個URL后回車,將會發(fā)生的事情?

那么,
人類在登錄時做了哪些事情呢,很簡單:

  1. 打開登錄頁面
  2. 輸入用戶名密碼,有時可能還有驗證碼,各種各樣的驗證碼
  3. 點擊登錄
  4. 等待瀏覽器自動跳轉(zhuǎn)

只要你稍微懂一點html語言,就應(yīng)該能分析個八九不離十。
機(jī)器人怎么做呢:
兩種方式:

方式一
需要使用虛擬的瀏覽器引擎。
優(yōu)點: 適合幾乎所有的網(wǎng)站登錄,可以人為輸入驗證碼
缺點: 速度較慢

  1. 請求登錄頁面的url,比如微博的(https://passport.weibo.cn/signin/login)
  2. 分析html中的表單數(shù)據(jù)
    2.1 找到輸入用戶名、密碼的輸入框
    2.2 把輸入框的text域替換成自己的用戶名密碼
  3. 模擬點擊提交按鈕

方式二
分析登錄信息提交方式,一般就是表單
優(yōu)點: 輕量,速度快
缺點: 局限性大,對技術(shù)要求高,對驗證碼機(jī)制需要做針對的破解

  1. 使用瀏覽器的調(diào)試模式查看網(wǎng)頁
  2. 檢查是否使用表單提交
  3. 點擊登錄按鈕,查看發(fā)送的請求數(shù)據(jù)。主要查看參數(shù)有無加密驗證或其它隱藏信息。
  4. 使用分析結(jié)果進(jìn)行請求操作

對于一般用戶,所有的非特殊性需求都可以使用方式一進(jìn)行完成。
若非是為了學(xué)習(xí),推薦方式一。

技術(shù)資料請參考:
Python爬蟲學(xué)習(xí)系列教程(推薦)
[Python爬蟲] Selenium爬取新浪微博移動端熱點話題及評論 (下)

如何讓腳本的行為看起來像人?

為什么要像人
因為很多服務(wù)器會使用一些反爬技術(shù)拒絕爬蟲軟件訪問。

哪些東西讓你看起來像人,哪些不像人
像人,其實可以分為兩點。
一類是看請求數(shù)據(jù),是否符合是瀏覽器發(fā)出的正常數(shù)據(jù),比如header內(nèi)容。
一類是看行為模式,發(fā)送請求對象的行為更像人類還是機(jī)器人,比如請求的頻率。

不像人,和上面對應(yīng)。
從請求數(shù)據(jù)上看,你沒說明user-agent,我就可以認(rèn)為你是非法侵入。你沒有帶著我之前給你的餅干(cookie)來,我也可以拒絕你。
從行為模式上,同一個ip訪問的頻率過高,短時間內(nèi)流量異常,都可以作為非人類處理。

結(jié)合反爬技術(shù)

  1. 需要登錄用cookie
  2. ip限制加代理
  3. 用user-agent告訴對方你是瀏覽器
  4. 服務(wù)器限制訪問頻率,加延遲
  5. ajax異步加載,使用js引擎或者人工分析
  6. redirect,最簡單的方式虛擬內(nèi)核+延遲
  7. 驗證碼,虛擬內(nèi)核

如何找切入點?

什么是好的登錄頁面?
沒有驗證碼,非ajax異步加載。
不一定局限于pc端網(wǎng)頁,app端、移動端一般做的反爬策略比較少,可以從這里入手,尋找適合的站點。

理解自己要做什么,如何偽裝成人類。仔細(xì)思考訪問流程,針對性的有哪些反爬手段。把這些想通了,爬蟲之路會好走很多。

轉(zhuǎn)載請注明:斯科特安的時間

相關(guān)文章和資料

技術(shù)語言資料請自行g(shù)oogle。

  1. 如何應(yīng)對網(wǎng)站反爬蟲策略?如何高效地爬大量數(shù)據(jù)?
  2. 能利用爬蟲技術(shù)做到哪些很酷很有趣很有用的事情?(很有意思)
  3. Python爬蟲學(xué)習(xí)系列教程(推薦)
  4. [Python爬蟲] Selenium爬取新浪微博移動端熱點話題及評論 (下)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識體系必須貫穿數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)提取、數(shù)據(jù)分析、數(shù)據(jù)挖掘、...
    whenif閱讀 18,329評論 45 523
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • 這個標(biāo)題是昨晚在青群里尹東老師提到的一個叫幕布的軟件,他說喜歡這個軟件還有一個重要的原因就是它的廣告詞:你對生活有...
    潘佳梅原創(chuàng)閱讀 435評論 0 1
  • 年少的時候,我一直在想,我的未來是不同的,我是這萬千人中獨特的一個。 不過,現(xiàn)在不同了,我活的吃力。 一切都無法應(yīng)...
    西瓜米閱讀 334評論 0 0

友情鏈接更多精彩內(nèi)容