最近想做一個QQ空間點贊的小工具,於是晚上下班回來就開始分析PC版的QQ空間,打開Chrome,切換到Network,然后輸入賬號密碼,然后點擊登錄。。。
然后,我曹。。。。一堆請求就開始了。。。。搞了半天,還要去分析登錄的加密方法。。。。太麻煩了。。。
然而我們寫代碼的懂不起那些。。。
於是就果斷掏出的大殺器Selenium+PhantomJS
說了這么多要不要直接上代碼啊???
好吧,直接上代碼
PhantomJSDriverService services = PhantomJSDriverService.CreateDefaultService(); PhantomJSDriver driver = new PhantomJSDriver(services); driver.Navigate().GoToUrl("https://qzone.qq.com/"); IWindow window = driver.Manage().Window; window.Maximize(); Thread.Sleep(3000); Actions actions = new Actions(driver); IWebDriver login = driver.SwitchTo().Frame(driver.FindElementById("login_frame")); login.FindElement(By.Id("switcher_plogin")).Click(); login.FindElement(By.Id("u")).SendKeys("賬號"); login.FindElement(By.Id("p")).SendKeys("密碼"); login.FindElement(By.Id("login_button")).Click(); Thread.Sleep(5000);
解釋一下代碼的意思:
1-5行代碼的意思就是創建一個沒有界面的瀏覽器,然后線程休眠三秒鍾,等待瀏覽器渲染。然后就是創建一個Actions,這里帶了一個s,不是C#庫里面的Action哈,切記哈!
然后就是切換到iframe,QQ空間里面的登錄區域實際上是一個iframe嵌入在里面
找到這個iframe的ID,然后SwitchTo
然后找到這個Iframe里面的
模擬點擊一下,就會顯示輸入賬號和密碼的輸入框。
然后找到輸入框和密碼的ID,並且SendKeys賬號和密碼進去,然后就找到登錄按鈕,Click一下就好了,就進入主頁了。
只要進去了,就能做的事情太多了。。。拿到Cookie ,各種點贊什么的,各種自動發說說啊,
忘了說一下,那段代碼要是能跑起來,還必須先在Nuget里面引入兩個庫
謝謝你的閱讀,希望能幫到你