利用会话保持的方法模拟登录笔趣阁全本小说网,并获取个人信息页面

1、进入笔趣阁的登录网站:https://www.ybdu.com/login.php     登陆前按下F12抓包在Form Data表单中获取登录参数:

username、password、usecookie、action、Submit,如图:



2、我们要获取的个人信息页面地址:https://www.ybdu.com/userdetail.php,如图:



话不多说,下面直接上代码:

package com.java;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;


/*
 * 本程序采用会话保持的方法访问须登录才能查看的页面
 * 测试成功时间:2018/6/30
 */

public class LoginDemo {

	 

    public void DoIt (String url1,String url2) throws Exception {

        BasicCookieStore cookieStore = new BasicCookieStore();

        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        
        

        try {

             // 模拟用户登录

             HttpPost httppost = new HttpPost(url1);// 指向一个没有验证码的登录页面

             List<NameValuePair>nvps = new ArrayList<NameValuePair>();
             
             
             nvps.add(new BasicNameValuePair("username", "输入你的账号"));  
             nvps.add(new BasicNameValuePair("password","输入你的密码"));              
             nvps.add(new BasicNameValuePair("usecookie", "2592000"));
             nvps.add(new BasicNameValuePair("action", "login"));  
             nvps.add(new BasicNameValuePair("Submit", ""));
            

             httppost.setEntity(new UrlEncodedFormEntity(nvps));

             CloseableHttpResponse respLogin = httpclient.execute(httppost);



             try {

            	 //打印页面1
                  HttpEntity entity = respLogin.getEntity();                 
                  String str1=EntityUtils.toString(entity,"utf-8");
                  System.out.println("页面1:"+str1+"\n");


                  EntityUtils.consume(entity);


                  System.out.println("Initial set of cookies:");

                  List<Cookie>cookies = cookieStore.getCookies();

                  if (cookies.isEmpty()) {

                      System.out.println("None");

                  }else {

                      for (int i = 0; i < cookies.size(); i++) {

                           System.out.println("- " + cookies.get(i).toString()+"\n");

                      }

                  }

             }finally {

                  respLogin.close();

             }
             
         
             
             
             
             
             
             
             

             // 利用会话保持,继续下一个页面访问

             HttpGet httpGetNext = new HttpGet(url2);

             CloseableHttpResponse respNext = httpclient.execute(httpGetNext);

             try {

                  System.out.println("Post logon cookies:");

               List<Cookie> cookies =cookieStore.getCookies();

              if (cookies.isEmpty()) {

                   System.out.println("None");

               } else {

                   for (int i = 0; i < cookies.size(); i++) {

                       System.out.println("- " + cookies.get(i).toString()+"\n");

                  }

               }
              
               HttpEntity entityNext = respNext.getEntity();
              
               String str2=EntityUtils.toString(entityNext);

               System.out.println("页面2:"+str2);//把结果打印出来看一下

               EntityUtils.consume(entityNext);

             }finally {

                  respNext.close();

             }
             
             

        }finally {

             httpclient.close();

        }

    }
    
    public static void main(String []  args) throws Exception{
    	
    	
    	
    	String url1="https://www.ybdu.com/login.php";//登录页面
    	String url2="https://www.ybdu.com/userdetail.php";//需要登录才能获取的页面
    	
    	LoginDemo test=new LoginDemo();
    	
    	test.DoIt(url1, url2);
    	
    }

}

这是获取成功的截图:


猜你喜欢

转载自blog.csdn.net/h2503652646/article/details/80870934