投機取巧,利用Python解決豆瓣驗證碼,實現模擬登陸!

前言:

可能大家對於豆瓣並不怎麼了解,我給大家簡單介紹一下。

豆瓣是一個社區網站,該網站以書影音起家,提供關於書籍、電影、音樂等作品的信息,無論描述還是評論都由用戶提供(User-generated content,UGC),是Web 2.0網站中具有特色的一個網站。網站還提供書影音推薦、線下同城活動、小組話題交流等多種服務功能,它更像一個集品味系統(讀書、電影、音樂)、表達系統(我讀、我看、我聽)和交流系統(同城、小組、友鄰)於一體的創新網絡服務,一直致力於幫助都市人群發現生活中有用的事物。

2012年8月,豆瓣宣佈其月度覆蓋獨立用戶數(Unique Visitors)已超過1億,日均PV為1.6億。 [1] 2013年第二、三季度的豆瓣月度覆蓋獨立用戶數均達2億,較去年同期增長一倍。 [2]

更為重要的一件事情是它是純Python編程語言開發的!!!

所以咱們利用Python去搞定它的驗證碼實現模擬登陸,是有一定意義的喲!

投機取巧,利用Python解決豆瓣驗證碼,實現模擬登陸!

實戰:

  • Python 3.6.5 解釋器
  • pycharm 編輯器
  • selenium 模塊

其實利用selenium模擬登陸沒什麼難度的,關鍵在於這個豆瓣的驗證碼要怎麼辦。

經過我多次截圖發現了一些規律,如下所示:

投機取巧,利用Python解決豆瓣驗證碼,實現模擬登陸!

投機取巧,利用Python解決豆瓣驗證碼,實現模擬登陸!

驗證碼方塊離左邊的距離永遠相等,只有Y軸上下有一點變化,但是這個重要嗎?

然後方塊離凹槽的距離偏差只有10PX左右,那麼你懂了嗎?

我們只需要往右邊每次移動相同的距離就可以了。然而前面所說的10px其實大家應該都懂,那個是可以忽略不計的,正常人去滑動驗證碼,他偶爾也有一點點偏差,沒有完全重合也會提示成功!(閾值)


投機取巧,利用Python解決豆瓣驗證碼,實現模擬登陸!

當然我最後去試了下,並不能夠成功。確實滑到了位置上,但是它提示網絡波動!

這可為難不了我,我一下就想到這個是檢測到我了,因為 機器滑動是急速的,和正常人滑動是有區別的,正常人滑動應該是先加速,再減速!你可以稱這個技術為軌跡。


投機取巧,利用Python解決豆瓣驗證碼,實現模擬登陸!


以下為Python勻加速代碼:

<code>

def

get_tracks

(distance)

:

''' 拿到移動軌跡,模仿人的滑動行為,先勻加速後勻減速 勻變速運動基本公式: ①v=v0+at ②s=v0t+½at² ③v²-v0²=2as :param distance: 需要移動的距離 :return: 存放每0.3秒移動的距離 '''

v =

0

t =

0.3

tracks = [] current =

0

mid = distance*

4

/

5

while

current < distance:

if

current < mid: a =

2

else

: a =

-3

v0 = v s = v0*t+

0.5

*a*(t**

2

) current += s tracks.append(round(s)) v = v0 + a*t

return

tracks/<code>


分享到:


相關文章: