httpclient登录百度https登录地址

来源:互联网 发布:php交友网站源码 编辑:程序博客网 时间:2024/04/30 04:40

1、先get请求https://passport.baidu.com/v2/?login获取cookie

2、再通过get请求https://passport.baidu.com/v2/?login获取token

3、设置参数post请求https://passport.baidu.com/v2/api/?login登录地址,登录。

4、最后将请求百度首页就能查看到已登录。

(每次都得把cookie往后传递)


//获取cookie  请求get
        Result r1 = SendRequest.sendGet("https://passport.baidu.com/v2/?login", null, null, "GBK");
        //设置参数
        Map<String, String> params = new HashMap<String, String>();
        params.put("class", "login");
        params.put("tpl", "mn");
        params.put("tangram", "true");
        //获取头部信息
        Map<String, Header> headers = r1.getHeaders();
        //设置头部参数
        Map<String, String> headerMap = new HashMap<String, String>();
        for(String str : headers.keySet()){
        headerMap.put(str, headers.get(str).toString().substring(str.length()+2));
        }
        //设置cookie
        headerMap.put("Cookie", r1.getCookie());
        //请求获取token
        Result r = SendRequest.sendGet("https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true", headerMap, params, "GBK");
        //设置登录参数
        Map<String, String> params2 = new HashMap<String, String>();
        params2.put("class", "login");
        params2.put("tpl", "mn");
        params2.put("tangram", "true");
        params2.put("username", "账号");
        params2.put("password", "密码");
       
        params2.put("token", r.getToken());
        params2.put("isPhone", "false");
        params2.put("loginType", "1");
        params2.put("verifycode", "");
       
        params2.put("callback", "parent.bdPass.api.login._postCallback");
         
        //设置cookie   只需设置cookie  设置其他header参数会导致报错
        Map<String, String> headerMap2 = new HashMap<String, String>();
        headerMap2.put("Cookie", r.getCookie());
        //post登录请求
        Result result = SendRequest.sendPost("https://passport.baidu.com/v2/api/?login", headerMap2, params2, "UTF-8");
        //判断是否登录成功
        Map<String, String> headerMap3 = new HashMap<String, String>();
        //一定要设置cookie  否则会未登录
        headerMap3.put("Cookie", result.getCookie());
        //请求百度首页
        SendRequest.sendGet("http://www.baidu.com", headerMap3, null, "UTF-8");


SendRequest类

package com.li.utli;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.HttpHost;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.params.ConnRoutePNames;import org.apache.http.cookie.Cookie;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicHeader;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import com.li.bean.Result;/** * 发送请求 *  * @author Legend、 *  */public class SendRequest {// 实例化一个Httpclient的//static DefaultHttpClient client = new DefaultHttpClient();static {//// 设置代理//HttpHost proxy = new HttpHost("192.168.13.19", 7777);//client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);}// 这是模拟get请求public static Result sendGet(String url, Map<String, String> headers,Map<String, String> params, String encoding, boolean duan)throws ClientProtocolException, IOException {DefaultHttpClient client = new DefaultHttpClient();// 如果有参数的就拼装起来 三目运算url = url + (null == params ? "" : assemblyParameter(params));// 这是实例化一个get请求HttpGet hp = new HttpGet(url);// 如果需要头部就组装起来if (null != headers)hp.setHeaders(assemblyHeader(headers));// 封装返回的参数Result result = new Result();// 执行请求后返回一个HttpResponseHttpResponse response = client.execute(hp);HttpEntity entityRsp = response.getEntity();StringBuffer result1 = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(entityRsp.getContent(), HTTP.UTF_8));String tempLine = rd.readLine();while (tempLine != null) {//获取百度tokenif (tempLine.contains("bdPass.api.params.login_token=")) {// System.out.println(tempLine.substring("bdPass.api.params.login_token=".length()+1,tempLine.length()-2));result.setToken(tempLine.substring("bdPass.api.params.login_token=".length() + 1,tempLine.length() - 2));}result1.append(tempLine);tempLine = rd.readLine();}System.out.println(result1.toString());// 如果为true则断掉这个get请求if (duan)hp.abort();// 返回一个HttpEntityHttpEntity entity = response.getEntity();// 设置返回的cookieresult.setCookie(assemblyCookie(client.getCookieStore().getCookies()));// 设置返回的状态result.setStatusCode(response.getStatusLine().getStatusCode());// 设置返回的头部信心result.setHeaders(response.getAllHeaders());// 设置返回的信息result.setHttpEntity(entity);return result;}public static Result sendGet(String url, Map<String, String> headers,Map<String, String> params, String encoding)throws ClientProtocolException, IOException {return sendGet(url, headers, params, encoding, false);}// 这是模拟post请求public static Result sendPost(String url, Map<String, String> headers,Map<String, String> params, String encoding)throws ClientProtocolException, IOException {// 实例化一个post请求HttpPost post = new HttpPost(url);DefaultHttpClient client = new DefaultHttpClient();// 设置需要提交的参数List<NameValuePair> list = new ArrayList<NameValuePair>();if (params != null) {for (String temp : params.keySet()) {list.add(new BasicNameValuePair(temp, params.get(temp)));}}post.setEntity(new UrlEncodedFormEntity(list, encoding));// 设置头部if (null != headers)post.setHeaders(assemblyHeader(headers));// 实行请求并返回HttpResponse response = client.execute(post);HttpEntity entity = response.getEntity();HttpEntity entityRsp = response.getEntity();StringBuffer result1 = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(entityRsp.getContent(), HTTP.UTF_8));String tempLine = rd.readLine();// 封装返回的参数Result result = new Result();while (tempLine != null) {//返回获取请求地址if (tempLine.contains("encodeURI('")) {// System.out.println(tempLine.substring("bdPass.api.params.login_token=".length()+1,tempLine.length()-2));// result.setToken(tempLine.substring("bdPass.api.params.login_token=".length()+1,tempLine.length()-2));result.setToken(tempLine.substring(tempLine.indexOf("encodeURI('") + 11,tempLine.indexOf("');")));}result1.append(tempLine);tempLine = rd.readLine();}System.out.println(result1.toString());// 设置返回状态代码result.setStatusCode(response.getStatusLine().getStatusCode());// 设置返回的头部信息result.setHeaders(response.getAllHeaders());// 设置返回的cookie信心result.setCookie(assemblyCookie(client.getCookieStore().getCookies()));// 设置返回到信息result.setHttpEntity(entity);return result;}// 这是组装头部public static Header[] assemblyHeader(Map<String, String> hashMap) {Header[] allHeader = new BasicHeader[hashMap.size()];int i = 0;for (String str : hashMap.keySet()) {Header header = new BasicHeader(str, hashMap.get(str));allHeader[i++] = header;// i++;// i = i +1;s}return allHeader;}// 这是组装cookiepublic static String assemblyCookie(List<Cookie> cookies) {StringBuffer sbu = new StringBuffer();for (Cookie cookie : cookies) {sbu.append(cookie.getName()).append("=").append(cookie.getValue()).append(";");}if (sbu.length() > 0)sbu.deleteCharAt(sbu.length() - 1);return sbu.toString();}// 这是组装参数public static String assemblyParameter(Map<String, String> parameters) {String para = "?";for (String str : parameters.keySet()) {para += str + "=" + parameters.get(str) + "&";}return para.substring(0, para.length() - 1);}}



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 注销公司社保户怎么办 手机媒体声音小怎么办 手机媒体没有声音怎么办 vivo开不了机怎么办 vivox5开不了机怎么办 淘宝商品出现问题怎么办 淘宝企业店新店怎么办 ps中的字体模糊怎么办 电商时代我们怎么办 电商虚假宣传怎么办 有货车找不到货源怎么办 天猫订单删除怎么办 微信支付不成功怎么办 滴滴订单未支付怎么办 在天猫买了假货怎么办 13岁有痛经怎么办 新店排名被降怎么办 淘宝店铺跳失率过大怎么办 国外打印很贵怎么办 店铺访客被拒怎么办 steam锁支付后怎么办 芦荟茎太长了怎么办 网店加盟被骗怎么办 分期乐忘记账号怎么办 贴墙纸遇到插头怎么办 用了屈臣氏过敏怎么办 商品房内电箱不符合标准怎么办 淘宝上恶意退货怎么办 退货率高了怎么办 淘宝店被关了钱怎么办 买家不申请退款怎么办 被买家恶意投诉怎么办 淘宝投诉后退款怎么办 天猫投诉不成功怎么办 苹果手机打不开流量怎么办 苹果6流量打不开怎么办 苹果笔记本电脑打不开软件怎么办 苹果软件蜂窝打不开怎么办 苹果手机wifi打不开怎么办 苹果app变成韩语怎么办 ipad键盘变成英文怎么办