zoukankan      html  css  js  c++  java
  • Jsoup模拟登陆例子

    Jsoup模拟登陆小例子,不同的网站,需要不同的模拟策略,散仙在这里仅仅作为一个引导学习。 

    Java代码  收藏代码
      1. package com.jsouplogin;  
      2.   
      3. import java.util.HashMap;  
      4. import java.util.List;  
      5. import java.util.Map;  
      6.   
      7. import org.jsoup.Connection;  
      8. import org.jsoup.Jsoup;  
      9. import org.jsoup.Connection.Method;  
      10. import org.jsoup.Connection.Response;  
      11. import org.jsoup.nodes.Document;  
      12. import org.jsoup.nodes.Element;  
      13.   
      14. /** 
      15.  * 使用Jsoup模拟登陆Iteye 
      16.  *  
      17.  *  
      18.  * 大体思路如下: 
      19.  *  
      20.  * 第一次请求登陆页面,获取页面信息,包含表单信息,和cookie(这个很重要),拿不到,会模拟登陆不上 
      21.  *  
      22.  *  
      23.  * 第二次登陆,设置用户名,密码,把第一次的cooking,放进去,即可 
      24.  *  
      25.  * 怎么确定是否登陆成功? 
      26.  *  
      27.  * 登陆后,打印页面,会看见欢迎xxx,即可证明 
      28.  *  
      29.  *  
      30.  * @date 2014年6月27日 
      31.  * @author qindongliang 
      32.  *  
      33.  *  
      34.  * **/  
      35. public class JsoupLoginIteye {  
      36.       
      37.     public static void main(String[] args)throws Exception {  
      38.           
      39.         JsoupLoginIteye jli=new JsoupLoginIteye();  
      40.         jli.login("xxxxx", "xxxxx");//输入Iteye的用户名,和密码  
      41.           
      42.     }  
      43.     /** 
      44.      * 模拟登陆Iteye 
      45.      *  
      46.      * @param userName 用户名 
      47.      * @param pwd 密码 
      48.      *  
      49.      * **/  
      50.     public void login(String userName,String pwd)throws Exception{  
      51.           
      52.         //第一次请求  
      53.         Connection con=Jsoup.connect("http://www.iteye.com/login");//获取连接  
      54.         con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");//配置模拟浏览器  
      55.         Response rs= con.execute();//获取响应  
      56.         Document d1=Jsoup.parse(rs.body());//转换为Dom树  
      57.         List<Element> et= d1.select("#login_form");//获取form表单,可以通过查看页面源码代码得知  
      58.           
      59.        //获取,cooking和表单属性,下面map存放post时的数据   
      60.        Map<String, String> datas=new HashMap<>();  
      61.        for(Element e:et.get(0).getAllElements()){  
      62.            if(e.attr("name").equals("name")){  
      63.                e.attr("value", userName);//设置用户名  
      64.            }  
      65.              
      66.            if(e.attr("name").equals("password")){  
      67.                e.attr("value",pwd); //设置用户密码  
      68.            }  
      69.              
      70.            if(e.attr("name").length()>0){//排除空值表单属性  
      71.                  datas.put(e.attr("name"), e.attr("value"));    
      72.            }  
      73.        }  
      74.           
      75.          
      76.        /** 
      77.         * 第二次请求,post表单数据,以及cookie信息 
      78.         *  
      79.         * **/  
      80.        Connection con2=Jsoup.connect("http://www.iteye.com/login");  
      81.        con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");  
      82.        //设置cookie和post上面的map数据  
      83.        Response login=con2.ignoreContentType(true).method(Method.POST).data(datas).cookies(rs.cookies()).execute();  
      84.        //打印,登陆成功后的信息  
      85.        System.out.println(login.body());  
      86.          
      87.        //登陆成功后的cookie信息,可以保存到本地,以后登陆时,只需一次登陆即可  
      88.        Map<String, String> map=login.cookies();  
      89.        for(String s:map.keySet()){  
      90.            System.out.println(s+"      "+map.get(s));  
      91.        }  
      92.       
      93.     }  
      94.       
      95.       
      96.       
      97.   
      98.       
      99.       
      100. }  
  • 相关阅读:
    windows系统下nodejs的环境变量配置
    Vim实用技巧笔记09
    Vim实用技巧笔记07
    Vim实用技巧笔记08
    Vim实用技巧笔记06
    visual studio code的python编程中遇到的SyntaxError:invalid syntax问题的原因和解决办法
    python学习第九天:mac系统的python开发工具Visual Studio Code安装配置、python的基础语法
    修改mac系统默认的python版本
    python的基本数据类型:Number、String的学习笔记
    python学习第八天:mac系统的python安装、软件说明、运行python的三种方法
  • 原文地址:https://www.cnblogs.com/zfswff/p/4960204.html
Copyright © 2011-2022 走看看