我用httpclient模拟登陆微博报如下错误:

[DEBUG] RequestAddCookies - Cookie [version: 0][name: USRHAWB][value: usrmdins212_186][domain: weibo.com][path: /][expiry: null] match [weibo.com:80/login.php]

[DEBUG] RequestAddCookies - Cookie [version: 0][name: USRHAJAWB][value: usrmdins13148][domain: weibo.com][path: /][expiry: null] match [weibo.com:80/login.php]

我的代码:

import java.io.UnsupportedEncodingException;  
import java.net.URLEncoder;  
import java.util.ArrayList;  
import java.util.Date;  
import java.util.List;  
 
import org.apache.commons.codec.binary.Base64;  
import org.apache.http.HttpResponse;  
import org.apache.http.NameValuePair;  
 
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.client.params.CookiePolicy;  
import org.apache.http.impl.client.DefaultHttpClient;  
 
import org.apache.http.message.BasicNameValuePair;  
 
import org.apache.http.params.HttpConnectionParams;  
import org.apache.http.protocol.HTTP;  
import org.apache.http.util.EntityUtils;  
 
public class Sina {  
 
    /**
     * @param args
     */  
    public static void main(String[] args) {  
        DefaultHttpClient client = new DefaultHttpClient();  
        client.getParams().setParameter("http.protocol.cookie-policy",  
                CookiePolicy.BROWSER_COMPATIBILITY);  
        client.getParams().setParameter(  
                HttpConnectionParams.CONNECTION_TIMEOUT, 5000);  
        try {  
            HttpPost post = new HttpPost(  
                    "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.19)");  
            //新加
            post.setHeader("User-Agent","Mozilla/5.0 (X11;Linux i686;rv:5.0) Gecko/20100101 firefox/5.0");
            post.setHeader("Referer","htpp://weibo.com");
            post.setHeader("Content-Type","application/x-www-form-urlencoded");
 
            String data = getServerTime();  
 
            String nonce = makeNonce(6);  
 
            List<NameValuePair> nvps = new ArrayList<NameValuePair>();  
            nvps.add(new BasicNameValuePair("entry", "weibo"));  
            nvps.add(new BasicNameValuePair("gateway", "1"));  
            nvps.add(new BasicNameValuePair("from", ""));  
            nvps.add(new BasicNameValuePair("savestate", "7"));  
            nvps.add(new BasicNameValuePair("useticket", "1"));  
            nvps.add(new BasicNameValuePair("ssosimplelogin", "1"));  
            nvps.add(new BasicNameValuePair("su",  
                    encodeAccount("***@sina.com")));  //用户名
            nvps.add(new BasicNameValuePair("service", "miniblog"));  
            nvps.add(new BasicNameValuePair("servertime", data));  
            nvps.add(new BasicNameValuePair("nonce", nonce));  
            nvps.add(new BasicNameValuePair("pwencode", "wsse"));  
            nvps.add(new BasicNameValuePair("sp", new SinaSSOEncoder().encode(  
                    "****", data, nonce)));//密码
 
            nvps.add(new BasicNameValuePair(  
                            "url",  
                            "http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack"));  
            nvps.add(new BasicNameValuePair("returntype", "META"));  
            nvps.add(new BasicNameValuePair("encoding", "UTF-8"));  
            nvps.add(new BasicNameValuePair("vsnval", ""));  
 
            post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
            
            HttpResponse response = client.execute(post);  
            String entity = EntityUtils.toString(response.getEntity());  
            //http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&retcode=2092&reason=%B1%A7%C7%B8%A3%A1%B5%C7%C2%BC%CA%A7%B0%DC%A3%AC%C7%EB%C9%D4%BA%F2%D4%D9%CA%D4'"
            String url = entity.substring(entity  
                    .indexOf("http://weibo.com/ajaxlogin.php?"), entity  
                    .indexOf(";\"/>"));  
            System.out.println("aaaaaaaaaaaaaaaa::" + url);
            // 获取到实际url进行连接  
            HttpGet getMethod = new HttpGet(url);  
 
            response = client.execute(getMethod);  
            entity = EntityUtils.toString(response.getEntity());  
            entity = entity.substring(entity.indexOf("userdomain") + 13, entity  
                    .lastIndexOf("\""));

getMethod = new HttpGet("http://weibo.com/u/2801870824?topnav=1");  
            response = client.execute(getMethod);  
            entity = EntityUtils.toString(response.getEntity());  
            // Document doc =  
            // Jsoup.parse(EntityUtils.toString(response.getEntity()));  
            //System.out.println(entity);  
 
        } catch (Exception e) {  
            // TODO: handle exception  
        }  
    }  
 
    private static String encodeAccount(String account) {  
        String userName = "";  
        try {  
            userName = Base64.encodeBase64(URLEncoder.encode(account, "UTF-8").getBytes()).toString();  
        } catch (UnsupportedEncodingException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return userName;  
    }  
 
    private static String makeNonce(int len) {  
        String x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  
        String str = "";  
        for (int i = 0; i < len; i++) {  
            str += x.charAt((int) (Math.ceil(Math.random() * 1000000) % x  
                    .length()));  
        }  
        return str;  
    }  
 
    private static String getServerTime() {  
        long servertime = new Date().getTime() / 1000;  
        return String.valueOf(servertime);  
    }  
}

请高手指点下!

httpclient模拟登陆微博问题相关推荐

  1. 使用HttpClient模拟登陆并爬取网页

    在使用Java进行网页爬虫时经常需要携带登陆的 Cookie 信息,然而 Cookie 是有时效性的,所以经常会碰到 Cookie 失效的情况.如何在 Cookie 失效后自动重新获取成了爬虫急需解决 ...

  2. HttpClient模拟登陆

    HttpClient模拟登陆 httpclient登录新浪微博(非SDK方式) 分享此文章 苦逼的折腾了快一星期,总算把新浪微博rsa加密登录折腾ok了,这里需要注意的是httpclient最好用4. ...

  3. 如何不通过调用官方微博api制作一个第三方微博app---在Android开发模拟登陆微博(weibo.cn)

    前段时间对一个第三方微博app---Share的实现原理非常感兴趣,也想自己实现一个自己的第三方微博app.目标有了,那就去查一下微博数据怎么获取吧.原来微博是有开放第三方接口的,只需要申请一个app ...

  4. php selenium模拟登陆,python+selenium自动化实战携带cookies模拟登陆微博

    首先获取cookies,使用手机扫码登录斗鱼,然后利用网页cookies保存在本地 有些同学可能会问,这不是相当于自己登录了吗,还模拟什么呢,其实来说这是一次获取cookies可以使用很久 #!/us ...

  5. python爬虫(一):模拟登陆微博

    最近花了不少时间来学python爬虫,觉得还是有很多问题的,比如说requests.get获得Pixiv的网页源代码,一直获取不到,不过我猜测大概是headers的问题,准备之后处理. 废话少说我们先 ...

  6. Java--使用httpClient模拟登陆正方教务系统获取课表

    最近形如课程格子与超表课程表应用如雨后春笋般涌现,他们自动获取课程表是怎么实现的呢.于是我用Java实现了一下模拟登陆正方教务系统获取课表的过程. 首先,我们先了解一下网站登录的原理:当我们输入学号, ...

  7. 使用Httpclient模拟登陆正方软件股份有限公司开发的教务管理系统

    事先声明,我写这篇,只是为了分享一下,登录网站不止有使用cookies这一种方法,还有一种使用随机码的方法,并没有泄露"商业机密"的想法,本人才疏学浅,只是在站在巨人的肩膀上,摘到 ...

  8. Java模拟登陆微博获取cookie+使用微博图床api上传图片

    前言 Wbp4j 前排安利以下使用java完成的基于微博图床api实现的一个上传图片的小轮子,然后里面也有完整的代码可以查看,欢迎戳一下~ 传送门 目的 因为最近个人小项目里需要上传图片,看着自己的1 ...

  9. 2019/1/6 初探JAVA京东 httpclient 模拟登陆(初篇)

    简述:(PS:  大神勿喷,接触爬虫较少) 最近与朋友聊天,关于京东上的业务,遇到某些烦恼,故有此需求,次需求针对性较强,翻来覆去也查阅不少资料. 分析细节 1. 京东账号分为,普通账户,企业账户,专 ...

最新文章

  1. 给刚入职开发人员的几句心里话
  2. 小程序引入的echarts过大如何解决_解决微信小程序引用echarts视图模糊的问题
  3. java监听com口_简单了解Java接口+事件监听机制
  4. init/inittab
  5. 移动前端开发之viewport的深入理解(转)
  6. C语言寻找第k小元素,小技巧——查找第k小的元素
  7. 图解虚拟机三种网络连接方式
  8. linux vnc 安装目录,Linux环境VNC服务安装、配置与使用(图)
  9. 《Go程序设计语言》- 第13章:低级编程
  10. jeecgboot框架简介
  11. 3dmax2009下载3dmax2009安装教程
  12. 关于javascript和typescript学习总结
  13. 【开源教程5】疯壳·开源编队无人机-飞控固件烧写
  14. 95%置信区间的含义_置信度为95%的置信区间什么意思
  15. 卷积神经网络——Faster Rcnn中的anchor和Proposal
  16. 基于java兰州交大学生生活服务网计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  17. 输入1-365 的一个数字判断它是几月几日
  18. 《ZigBee实战演练》
  19. PR视频背景模板 6个创意炫酷动态短视频背景排版pr模板
  20. 计算机原理课设,计算机组成原理课设文档

热门文章

  1. @Mock,@Spy和@InjectMock
  2. 金蝶云星空与金蝶云星空对接集成付款单查询连通付款单新增(付款单)
  3. 日语学习,从入门到入坑---促音和拗音
  4. libsvm数据格式
  5. 华钜同创:跨境运营培训如何提升亚马逊产品转化率
  6. 「SQL面试题库」 No_61 每位学生的最高成绩
  7. 【学习记录】… ?…:… C语言问号表达式的用法感叹
  8. 统计机器翻译词对齐模型IBM-model1
  9. 三天打渔两天晒网问题(python)
  10. CADD计算机辅助药物设计+AIDD人工智能药物发现与设计专题