1. 程式人生 > >網路爬蟲技術,如何實現登入破解,案例分享!

網路爬蟲技術,如何實現登入破解,案例分享!

有時候大家在爬蟲的時候會遇到要登入的情況,如果不登入則爬不到自己想要的東西,那麼如何解決呢?這裡大家也可以多思考利用什麼方式可以達到目的。

這裡以部落格園為例,here we go~~

首先簡單的介紹一下selenium和phantomJS:

selenium是一款測試工具,能夠模擬使用者對瀏覽器進行操作。

phantomJS是一款輕便式瀏覽器,其沒有介面並且功能相對簡單,因此速度上會比較快速。

說到這大家應該明白selenium+phantomJS如何實現登入破解了,對,就是模擬人工操作

我們現看一下部落格園的登入介面:


找到這些元素所在的點,填寫賬號密碼,並且點選登入按鈕,之後等待一段時間,因為頁面載入需要時間,之後就可以爬取登陸後的介面:



話不多說,直接上程式碼:

package com.eversec.crawler;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * Created by tyx on 2017/9/14.
 * 通過selenium+phantomJS登入部落格園
 */
public class CnblogLogin {
    public static void main(String[] args) throws Exception{
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        //ssl證書支援
        desiredCapabilities.setCapability("acceptSslCerts", true);
        //截圖支援
        desiredCapabilities.setCapability("takesScreenshot", true);
        //css搜尋支援
        desiredCapabilities.setCapability("cssSelectorsEnabled", true);
        //js支援
        desiredCapabilities.setJavascriptEnabled(true);
        //驅動支援
        desiredCapabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,"D:\\phantomjs-2.1.1-windows\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");
        //建立無介面瀏覽器物件

        WebDriver webDriver = new PhantomJSDriver(desiredCapabilities);
        try {
            webDriver.get("https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F");
            WebElement usernameEle = webDriver.findElement(By.id("input1"));
            WebElement passwordEle = webDriver.findElement(By.id("input2"));
//        設定賬號密碼
            usernameEle.sendKeys("");
            passwordEle.sendKeys("");
            WebElement loginButtom = webDriver.findElement(By.id("signin"));
            loginButtom.click();
            webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
            List<WebElement> elements = webDriver.findElements(By.xpath("//a[@class='titlelnk']"));
            for (WebElement element : elements){
                System.out.println(element.getText());
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            webDriver.close();
            webDriver.quit();
        }
    }
}

執行後結果如下:


以上就是關於‘用selenium+phantomJS實現簡單的登入破解’的全部內容了,如果你有其他的方法或者更好的建議,留言一起交流。