httpclient模拟登陆微博问题
我用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模拟登陆微博问题相关推荐
- 使用HttpClient模拟登陆并爬取网页
在使用Java进行网页爬虫时经常需要携带登陆的 Cookie 信息,然而 Cookie 是有时效性的,所以经常会碰到 Cookie 失效的情况.如何在 Cookie 失效后自动重新获取成了爬虫急需解决 ...
- HttpClient模拟登陆
HttpClient模拟登陆 httpclient登录新浪微博(非SDK方式) 分享此文章 苦逼的折腾了快一星期,总算把新浪微博rsa加密登录折腾ok了,这里需要注意的是httpclient最好用4. ...
- 如何不通过调用官方微博api制作一个第三方微博app---在Android开发模拟登陆微博(weibo.cn)
前段时间对一个第三方微博app---Share的实现原理非常感兴趣,也想自己实现一个自己的第三方微博app.目标有了,那就去查一下微博数据怎么获取吧.原来微博是有开放第三方接口的,只需要申请一个app ...
- php selenium模拟登陆,python+selenium自动化实战携带cookies模拟登陆微博
首先获取cookies,使用手机扫码登录斗鱼,然后利用网页cookies保存在本地 有些同学可能会问,这不是相当于自己登录了吗,还模拟什么呢,其实来说这是一次获取cookies可以使用很久 #!/us ...
- python爬虫(一):模拟登陆微博
最近花了不少时间来学python爬虫,觉得还是有很多问题的,比如说requests.get获得Pixiv的网页源代码,一直获取不到,不过我猜测大概是headers的问题,准备之后处理. 废话少说我们先 ...
- Java--使用httpClient模拟登陆正方教务系统获取课表
最近形如课程格子与超表课程表应用如雨后春笋般涌现,他们自动获取课程表是怎么实现的呢.于是我用Java实现了一下模拟登陆正方教务系统获取课表的过程. 首先,我们先了解一下网站登录的原理:当我们输入学号, ...
- 使用Httpclient模拟登陆正方软件股份有限公司开发的教务管理系统
事先声明,我写这篇,只是为了分享一下,登录网站不止有使用cookies这一种方法,还有一种使用随机码的方法,并没有泄露"商业机密"的想法,本人才疏学浅,只是在站在巨人的肩膀上,摘到 ...
- Java模拟登陆微博获取cookie+使用微博图床api上传图片
前言 Wbp4j 前排安利以下使用java完成的基于微博图床api实现的一个上传图片的小轮子,然后里面也有完整的代码可以查看,欢迎戳一下~ 传送门 目的 因为最近个人小项目里需要上传图片,看着自己的1 ...
- 2019/1/6 初探JAVA京东 httpclient 模拟登陆(初篇)
简述:(PS: 大神勿喷,接触爬虫较少) 最近与朋友聊天,关于京东上的业务,遇到某些烦恼,故有此需求,次需求针对性较强,翻来覆去也查阅不少资料. 分析细节 1. 京东账号分为,普通账户,企业账户,专 ...
最新文章
- 给刚入职开发人员的几句心里话
- 小程序引入的echarts过大如何解决_解决微信小程序引用echarts视图模糊的问题
- java监听com口_简单了解Java接口+事件监听机制
- init/inittab
- 移动前端开发之viewport的深入理解(转)
- C语言寻找第k小元素,小技巧——查找第k小的元素
- 图解虚拟机三种网络连接方式
- linux vnc 安装目录,Linux环境VNC服务安装、配置与使用(图)
- 《Go程序设计语言》- 第13章:低级编程
- jeecgboot框架简介
- 3dmax2009下载3dmax2009安装教程
- 关于javascript和typescript学习总结
- 【开源教程5】疯壳·开源编队无人机-飞控固件烧写
- 95%置信区间的含义_置信度为95%的置信区间什么意思
- 卷积神经网络——Faster Rcnn中的anchor和Proposal
- 基于java兰州交大学生生活服务网计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- 输入1-365 的一个数字判断它是几月几日
- 《ZigBee实战演练》
- PR视频背景模板 6个创意炫酷动态短视频背景排版pr模板
- 计算机原理课设,计算机组成原理课设文档