Selenium2+python自動化41-繞過驗證碼(add_cookie)

來源:互聯網
上載者:User

標籤:nal   java   標記   xxx   加密   帳號   提高   日期   drive   

前言

驗證碼這種問題是比較頭疼的,對於驗證碼的處理,不要去想破解方法,這個驗證碼本來就是為了防止別人自動化登入的。如果你能破解,說明你們公司的驗證碼嗎安全層級不高,那就需要提進階別了。

對應驗證碼,要麼是讓開發在測試環境弄個萬能的驗證碼,如:1234,要麼就是盡量繞過去,如本篇介紹的添加cookie的方法。

一、fiddler抓包

1.前一篇講到,登入後會產生一個已登入狀態的cookie,那麼只需要直接把這個值添加到cookies裡面就可以了。

2.可以先手動登入一次,然後抓取這個cookie,這裡就需要用抓包工具fiddler了

3.先開啟部落格園登入介面,手動輸入帳號和密碼(不要點登入按鈕)

4.開啟fiddler抓包工具,此時再點部落格園登入按鈕

5.登入成功後,再查看cookie變化,發現多了兩組參數,多的這兩組參數就是我們想要的,copy出來,一會有用

 

二、添加cookie方法:driver.add_cookie()

1.add_cookie(cookie_dict)方法裡面參數是cookie_dict,上面裡面參數是字典類型。

2.源碼官方文檔介紹:

add_cookie(self, cookie_dict)
Adds a cookie to your current session.

:Args:
- cookie_dict: A dictionary object, with required keys - "name" and "value";
optional keys - "path", "domain", "secure", "expiry"

Usage:
driver.add_cookie({‘name‘ : ‘foo‘, ‘value‘ : ‘bar‘})
driver.add_cookie({‘name‘ : ‘foo‘, ‘value‘ : ‘bar‘, ‘path‘ : ‘/‘})
driver.add_cookie({‘name‘ : ‘foo‘, ‘value‘ : ‘bar‘, ‘path‘ : ‘/‘, ‘secure‘:True})

3.從官方的文檔裡面可以看出,添加cookie時候傳入字典類型就可以了,等號左邊的是name,等號左邊的是value。

4.把前面抓到的兩組資料(參數不僅僅只有name和value),寫成字典類型:

{‘name‘:‘.CNBlogsCookie‘,‘value‘:‘2C3AE01E461B2D2F1572D02CB936D77A053089AA2xxxx...‘}

{‘name‘:‘.Cnblogs.AspNetCore.Cookies‘,‘value‘:‘CfDJ8Mmb5OBERd5FqtiQlKZZIG4HKz_Zxxx...‘}

 

三、cookie組成結構

1.用抓包工具fidller只能看到cookie的name和value兩個參數,實際上cookie還有其它參數

2.cookie參數組成,以下參數是我通過get_cookie(name)擷取到的,

參考上一篇:Selenium2+python自動化40-cookie相關操作

cookie ={u‘domain‘: u‘.cnblogs.com‘,
            u‘name‘: u‘.CNBlogsCookie‘,
            u‘value‘: u‘xxxx‘,
            u‘expiry‘: 1491887887,
            u‘path‘: u‘/‘,
            u‘httpOnly‘: True,
            u‘secure‘: False}

name:cookie的名稱

value:cookie對應的值,動態產生的

domain:伺服器網域名稱

expiry:Cookie有效終止日期

path:Path屬性定義了Web伺服器上哪些路徑下的頁面可擷取伺服器設定的Cookie

httpOnly:防指令碼攻擊

secure:在Cookie中標記該變數,表明只有當瀏覽器和Web Server之間的通訊協定為加密認證協議時,

瀏覽器才向伺服器提交相應的Cookie。當前這種協議只有一種,即為HTTPS。

 

四、添加cookie

1.這裡需要添加兩個cookie,一個是.CNBlogsCookie,另外一個是.Cnblogs.AspNetCore.Cookies。

2.我這裡開啟的網頁是部落格的首頁:http://www.cnblogs.com/yoyoketang,沒進入登入頁。

3.添加cookie後重新整理頁面,接下來就是見證奇蹟的時刻了。

 

五、參考代碼:


# coding:utf-8
from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://www.cnblogs.com/yoyoketang")

# # 添加cookie
c1 = {u‘domain‘: u‘.cnblogs.com‘,
      u‘name‘: u‘.CNBlogsCookie‘,
      u‘value‘: u‘xxxx‘,
      u‘expiry‘: 1491887887,
      u‘path‘: u‘/‘,
      u‘httpOnly‘: True,
      u‘secure‘: False}

c2 = {u‘domain‘: u‘.cnblogs.com‘,
      u‘name‘: u‘.Cnblogs.AspNetCore.Cookies‘,
      u‘value‘: u‘xxxx‘,
      u‘expiry‘: 1491887887,
      u‘path‘: u‘/‘,
      u‘httpOnly‘: True,
      u‘secure‘: False}

driver.add_cookie(c1)  # 添加2個值
driver.add_cookie(c2)

time.sleep(3)          # 交流QQ群:232607095

# 重新整理下頁面就見證奇蹟了
driver.refresh()  

有幾點需要注意:

1.登入時候要勾選下次自動登入按鈕。

2.add_cookie()只添加name和value,對於部落格園的登入是不成功。

3.本方法並不適合所有的網站,一般像部落格園這種記住登入狀態的才會適合

學習過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:232607095

另外成立了python介面自動化QQ群:226296743

 

Selenium2+python自動化41-繞過驗證碼(add_cookie)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.