目錄
前言
目標
分析x0
分析x1
分析x2
代碼
結語
前言
大家好,我叫善念。着實是有些單子無法拿出來給大家分享,至於原因大家應該也猜得到,總是帶着點看不清的顏色。
其實談不上外包項目,不過是我自己制作的一些成品加密軟件,給出一張卡密而已。不過我還是願意分享給大家。因為難度並不高,而且很有價值空間,加上官方也一直不去和諧這個東西,所以呢,我就記錄一下這個實戰。

目標
網址為:Google注冊頁面(需開梯子)
很多人學習python,不知道從何學起。 很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手。 很多已經做案例的人,卻不知道如何去學習更加高深的知識。 那么針對這三類人,我給大家提供一個好的學習平台,免費領取視頻教程,電子書籍,以及課程的源代碼! QQ群:701698587 歡迎加入,一起討論 一起學習!
原理很簡單,就是利用Google的注冊接口發信,我一般稱之為大戰協議,或者大戰腳本吧,因為咱們今天做的確實是腳本。

確實有能力的可以去過一下JavaScript逆向。
分析x0
這個注冊流程就簡單了,輸入姓名、點擊改用當前電子郵件地址、輸入密碼、確認密碼、點擊下一步。

看我給大家示范一下會出現什么結果,先填好資料:

當我點擊下一步后:

emmmm,看到效果了吧。

分析x1
既然是說了做Python腳本,又是在網頁模擬填表,那么繼續利用咱們老框架selenium。
.....每次都要去以前的文章里面復制粘貼告訴你們如何配置selenium,看來到時候要專門寫篇selenium的教程了(以下都是從我老文章中復制的)。
插件的安裝
關於selenium這個模塊,咱們來重點介紹一下:
Selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。
如果不能夠理解我就講點白話,如果你是web開發人員,開發好了幾百個網站,那么如果你認為地去一個個的測試BUG,是不是很浪費時間?而selenium這個框架就是用來模擬人去自動化操控瀏覽器的,那么是不是就節約了很多時間呢。
既然selenium能夠操控瀏覽器,那么它們之間必須要有一個橋梁,總不能無中生有吧?
那么操控的瀏覽器款式不一樣,中間的橋梁也是不一樣的。比如我更喜歡用chrome瀏覽器,那么咱們需要下載一個selenium與Chrome的橋梁——Chromedriver插件。
下載地址

下載與你當前谷歌瀏覽器版本最相近的Chromedriver

那么像我的話,下載

即可。
Windows系統需下載32位,其它的自己看着辦。點進去下載win32即可。

那么如何讓Python與selenium連接起來呢,這里咱們需要配置一個環境變量,就是把Python與selenium處於同一個目錄:

到此為止,咱們的環境就搭建好了。
分析x2
那么這個東西,真的沒什么好講的,就是找到輸入框模擬輸入,然后模擬點擊下一步......沒啥任何技術含量。
加上UI設計也才沒到400行代碼,總之就是太簡單了啊。下面直接給大家上核心代碼吧。
代碼
driver = webdriver.Chrome() wait = WebDriverWait(driver, 20) driver.delete_all_cookies() driver.get(f'https://accounts.google.com/signup/v2/webcreateaccount?hl=zh-TW&flowName=GlifWebSignIn&flowEntry=SignUp') # 輸入姓名 xm = '' # 姓 x = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="lastName"]'))) x.send_keys(xm.strip().split('----')[0]) # 名 m1 = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="firstName"]'))) m1.send_keys(xm.strip().split('----')[1]) # 管理 gl = wait.until( EC.element_to_be_clickable((By.XPATH, '//*[@id="view_container"]/div/div/div[2]/div/div[1]/div/form/span/section/div/div/div[2]/div[3]/div/div/button')) ) gl.click() # 輸入郵箱 yx = '' # 郵箱 yx1 = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="username"]'))) yx1.send_keys(str(yx).strip()) # 密碼輸入 mmm = str(18508474044 + random.randint(0, 208474044)) + 'Aq' # 密碼 mm = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="passwd"]/div[1]/div/div[1]/input'))) mm.send_keys(mmm) # 密碼確認 mmqr = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="confirm-passwd"]/div[1]/div/div[1]/input'))) mmqr.send_keys(mmm) # 確認點擊 qr = wait.until( EC.element_to_be_clickable((By.XPATH, '//*[@id="accountDetailsNext"]')) ) qr.click() time.sleep(3.5) driver.quit()
結語
——可以說我不走正途,而我只是想告訴大家,水在沙漠里更值錢。
我並沒有包含任何私心,絕對的無償分享知識,你在怨我?