用于登陆后的信息收集爬虫

有时候我们需要的用户信息是要通过用户登录后得到,这些信息其实也可以通过爬虫获得。
本Demo中用到的2个外部库 org.jsoup,jxl(用于写EXCEL),
同样以中南财经政法大学教务处学生个人信息系统为例:
网址:http://202.114.224.81:7777/zhxt_bks/zhxt_bks.html
这里是登陆
接下来就是查看网页源码,即找到传递账号密码的目的地址
http://202.114.224.81:7777/pls/wwwbks/bks_login2.login
验证
登陆进去后查看所需调转的网页地址
http://202.114.224.81:7777/pls/wwwbks/xk.CourseView
(我这次是为了得到课表,所以进入的是课表的网页)
地址
接下来就是定位所需的内容
定位

接下来就是Po出源代码
首先是远程登陆的代码:

 public static String login(String xh,String pwd) throws IOException
    {
        Map<String,String>   datas=new HashMap<String, String>();
        //对应学号和密码stuid pwd
        datas.put("stuid", xh);
        datas.put("pwd", pwd);
        //将值传入服务器,这个网址我在前面的图中用箭头指出了
        Connection connection=Jsoup.connect("http://202.114.224.81:7777/pls/wwwbks/bks_login2.login").data(datas);
        //得到Cookie才能进行页面跳转
        connection.get();
       //每次cookie不同
String  accountCookie=connection.response().cookie("ACCOUNT");
connection2=Jsoup.connect("http://202.114.224.81:7777/pls/wwwbks/bkscjcx.curscopre")

          return accountCookie;
    }

接下来是主函数:

public static void main(String args[]) throws IOException, BiffException, WriteException
    {
        int m=0;
        //我在这里就不暴露自己的账号密码,总之xh写自己的账号
        //pwd   写密码
        String xh="";
        String pwd="";  

        WritableWorkbook book = Workbook.createWorkbook(new File("E:/学生信息表.xls")); //打开文件
        WritableSheet sheet = book.createSheet("第一页", 0); //生成名为“第一页”的工作表,参数0表示第一
        //跳转的网页地址
        String searchKBUrl="http://202.114.224.81:7777/pls/wwwbks/xk.CourseView";
        //获得Cookie
        String accountCookie=login(xh, pwd);
        //传入Cookie值进行页面的跳转
        Connection connection=Jsoup.connect(searchKBUrl).cookie("ACCOUNT", accountCookie);
        //建立连接
        Document logindoc=connection.get();
        String[] str={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
        String[] str1={"第一节","第二节","第三节","第四节","第五节"};
        for(int i=0;i<5;i++)
             sheet.addCell(new Label(0,i+1,str1[i]));
        for(int j=0;j<7;j++)
             sheet.addCell(new Label(j+1,0,str[j]));
        for(int i=0;i<5;i++)
        {
            for (int j=0;j<7;j++)
            {
                String courseContent=logindoc.getElementsByClass("td_biaogexian").get(m).getElementsByTag("p").text();
                StringBuffer sBuffer=new StringBuffer();
                char[] name=courseContent.toCharArray();
                for(int k=0;k<name.length;k++)
                {
                 if(!(name[k]==160))
                     sBuffer.append(name[k]);   
                }

                sheet.addCell(new Label(j+1,i+1,sBuffer.toString()));
                 m++;
            }
        }
     book.write();
     book.close();
    }

Po出结果图:
结果
有人可能会说为什么我自己进行登录的时候是需要验证码的。但是我在这里并没有进行验证码的输入,因为学校比较low.做的是前端验证码。如果远程登录直接挂服务器的话就可以绕过前端,楼主曾试过暴力破解别人的学生信息密码,就是不停地循环迭代,(密码只有6位),8G内存的笔记本,2个半小时就得到了密码。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值