Java通过httpclient获取cookie模拟登录(网络爬虫/HTTP)

package  Step1;
 
import  org.apache.commons.httpclient.Cookie;
import  org.apache.commons.httpclient.HttpClient;
import  org.apache.commons.httpclient.NameValuePair;
import  org.apache.commons.httpclient.cookie.CookiePolicy;
import  org.apache.commons.httpclient.methods.GetMethod;
import  org.apache.commons.httpclient.methods.PostMethod;
/**
  *
     * @ClassName: HttpLogin
     * @Description:  java通过httpclient获取cookie模拟登录
     * @author zeze
     * @date 2015年11月10日 下午4:18:08
     *
  */
 
public  class  HttpLogin {
 
     public  static  void  main(String[] args) {
         // 登陆 Url
         String loginUrl =  "http://passport.mop.com/?targetUrl=http://hi.mop.com/?&g=1447141423230&loginCheck=UNLOGINED" ;
         // 需登陆后访问的 Url
         String dataUrl =  "http://hi.mop.com/?" ;
         HttpClient httpClient =  new  HttpClient();
 
         // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
         PostMethod postMethod =  new  PostMethod(loginUrl);
 
         // 设置登陆时要求的信息,用户名和密码
         NameValuePair[] data = {  new  NameValuePair( "loginName" "chzeze123" ),  new  NameValuePair( "loginPasswd" "**" ) };
         postMethod.setRequestBody(data);
         try  {
             // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略
             httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
             int  statusCode=httpClient.executeMethod(postMethod);
                             
             // 获得登陆后的 Cookie
             Cookie[] cookies = httpClient.getState().getCookies();
             StringBuffer tmpcookies =  new  StringBuffer();
             for  (Cookie c : cookies) {
                 tmpcookies.append(c.toString() +  ";" );
                 System.out.println( "cookies = " +c.toString());
             }
             if (statusCode== 302 ){ //重定向到新的URL
                 System.out.println( "模拟登录成功" );
                 // 进行登陆后的操作
                 GetMethod getMethod =  new  GetMethod(dataUrl);
                 // 每次访问需授权的网址时需带上前面的 cookie 作为通行证
                 getMethod.setRequestHeader( "cookie" , tmpcookies.toString());
                 // 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据
                 // 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外
                 postMethod.setRequestHeader( "Referer" "http://passport.mop.com/" );
                 postMethod.setRequestHeader( "User-Agent" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" );
                 httpClient.executeMethod(getMethod);
                 // 打印出返回数据,检验一下是否成功
                 String text = getMethod.getResponseBodyAsString();
                 System.out.println(text);
             }
             else  {
                 System.out.println( "登录失败" );
             }
         }
         catch  (Exception e) {
             e.printStackTrace();
         }
     }
}
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值