無需發件箱Python自動傳送郵件指令碼,為我掙了上萬月的簡單專案
目錄
前言
目標
分析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()
結語
——可以說我不走正途,而我只是想告訴大家,水在沙漠裡更值錢。
我並沒有包含任何私心,絕對的無償分享知識,你在怨我?