当前位置:编程学习 > JAVA >>

Java代码模拟淘宝登录 始终登录不成功

 - -一直返回的都是登录的那个页面


	 DefaultHttpClient httpclient = new DefaultHttpClient();
 HttpContext localContext = new BasicHttpContext();
 localContext.setAttribute(ClientContext.COOKIE_STORE, cs); 
 HttpPost httppost = new HttpPost("https://login.taobao.com/member/login.jhtml");
 
 try {
 //&is_login=1&from=alimama&fc=default&style=minisimple&support=000001
StringEntity reqEntity = new StringEntity("TPL_username=账号&TPL_password=密码&action=Authenticator&event_submit_do_login=anything");
reqEntity.setContentType("application/x-www-form-urlencoded");
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
Header[] headers = response.getAllHeaders();
for (Header h : headers) {
String name = h.getName();
String value = h.getValue();

if ("Set-Cookie".equalsIgnoreCase(name)) {
Cookis += value;
//System.out.println("name:"+name+"     value:"+value);
/*String[] strs = value.split(";");
for (String str : strs) {
String[] cookies = str.split("=");
System.out.println(str);
if(cookies[0].toString().equals("HttpOnly")){
cs.addCookie(new BasicClientCookie(cookies[0],""));
}else if(cookies[0].toString().equals("Expires")){
cs.addCookie(new BasicClientCookie("Expires","sun"));
}else{
cs.addCookie(new BasicClientCookie(cookies[0], cookies[1]));
}
}*/
System.out.println(value);
}
}
HttpEntity entity = response.getEntity(); 
 /*DefaultHttpClient httpclient1 = new DefaultHttpClient();
 HttpGet httpget = new HttpGet("http://u.alimama.com/union/spread/selfservice/merchandisePromotion.htm");
 httpget.setHeader("Cookie", Cookis); 
 HttpResponse response1 = httpclient1.execute(httpget);
 HttpEntity entity1 = response1.getEntity();*/
//  String resultStr ="";

// BufferedReader reader = new BufferedReader(new InputStreamReader(entity1.getContent(), "UTF-8")); 


  BufferedReader reader = new BufferedReader(
new InputStreamReader(entity.getContent(), "gb2312")); 
 String line = null;
 while ((line = reader.readLine())!=null) {
 System.out.println(line);
 }



--------------------编程问答-------------------- 正常的,要是发个包就能模拟登陆了,那得多危险,一般在网页上随便加个验证码就能防住你这种了,你只有账号密码,验证码没有就登陆不了返回当然还是登陆页了。 --------------------编程问答--------------------
引用 1 楼 lwb314 的回复:
正常的,要是发个包就能模拟登陆了,那得多危险,一般在网页上随便加个验证码就能防住你这种了,你只有账号密码,验证码没有就登陆不了返回当然还是登陆页了。

但是返回给我的结果里面并没有要求输入验证码或者密码错误= --------------------编程问答--------------------
引用 2 楼 x15989855182 的回复:
Quote: 引用 1 楼 lwb314 的回复:

正常的,要是发个包就能模拟登陆了,那得多危险,一般在网页上随便加个验证码就能防住你这种了,你只有账号密码,验证码没有就登陆不了返回当然还是登陆页了。

但是返回给我的结果里面并没有要求输入验证码或者密码错误=


我这几天学python一直在试 csdn的模拟登录 没成功

返回404 --------------------编程问答-------------------- 淘宝登陆的地方使用了控件,那个好像不是一般的输入框,和填支付密码那边类似的。应该是加密了 --------------------编程问答--------------------
引用 4 楼 huxiweng 的回复:
淘宝登陆的地方使用了控件,那个好像不是一般的输入框,和填支付密码那边类似的。应该是加密了
如果我本地有安装控件了呢。    有没办法去实现这个登录功能 --------------------编程问答--------------------
引用 5 楼 x15989855182 的回复:
Quote: 引用 4 楼 huxiweng 的回复:

淘宝登陆的地方使用了控件,那个好像不是一般的输入框,和填支付密码那边类似的。应该是加密了
如果我本地有安装控件了呢。    有没办法去实现这个登录功能


要这么容易模拟登陆,安全性何处可言?我觉得不会很容易的。 --------------------编程问答--------------------
引用 3 楼 songbgi 的回复:
我这几天学python一直在试 csdn的模拟登录 没成功
返回404
 python 是个好东西哈 --------------------编程问答-------------------- 用webdriver吧,模拟浏览器操作,应该是没问题的。 --------------------编程问答-------------------- 没有什么网页操作是不能模拟的,浏览器能做的事情自己写程序也能做。装个HTTP包分析工具,如 Http Analyzer,Http Watch,先在浏览器里面登录淘宝,然后分析Http交互过程和数据,只要你的程序传过去的Http数据包是一样的,那肯定就没问题。 --------------------编程问答--------------------
引用 8 楼 dyflovexlp 的回复:
用webdriver吧,模拟浏览器操作,应该是没问题的。
  好  我现在就测试一下。 --------------------编程问答--------------------
引用 6 楼 huxiweng 的回复:
Quote: 引用 5 楼 x15989855182 的回复:

Quote: 引用 4 楼 huxiweng 的回复:

淘宝登陆的地方使用了控件,那个好像不是一般的输入框,和填支付密码那边类似的。应该是加密了
如果我本地有安装控件了呢。    有没办法去实现这个登录功能


要这么容易模拟登陆,安全性何处可言?我觉得不会很容易的。



  又一个下午 。 我去测试下用webdriver --------------------编程问答--------------------
引用 9 楼 iLdf 的回复:
没有什么网页操作是不能模拟的,浏览器能做的事情自己写程序也能做。装个HTTP包分析工具,如 Http Analyzer,Http Watch,先在浏览器里面登录淘宝,然后分析Http交互过程和数据,只要你的程序传过去的Http数据包是一样的,那肯定就没问题。
可能是我哪一步有问题,但是还是找不出来。   --------------------编程问答-------------------- 我之前做过新浪微博的模拟登陆,是在网上找到的一篇文章,代码长度至少是你这个的两倍以上。我觉得淘宝这种直接涉及钱的登陆会更加复杂。
简单说一下新浪微博的登陆吧。
新浪微博密码应该是运用的应该是RSA加密方式。它连你的用户名都加密了,不过是分别加密的,用户名应该只是用MD5之类的算法简单处理一下。用户名加密一次,以后都是这个不会变了。而密码,你每次登陆时密文都是不一样的。加密后的密文不记得是128位还是256位,总之非常长。而且新浪微博的密码加密是用了服务器时间和随机字符串加密码混合加密的,因为随机值和服务器时间一直在变,所以每次加密后的值都是不一样的。

为什么这么说:你去在电脑上登陆一下你的微博试试。当然,你需要用Chrome浏览器,火狐浏览器,或者可以带调试功能的浏览器。在你的微博登陆页面按F12键打开调试窗口,找到NetWork这个标签栏。然后输入你的微博用户名,将光标移开用户名输入框,你就会看到NetWork像后台发送了一个信息,然后又返回了一些信息,返回的这些信息里面就包含了server time和一个随机干扰值。当然,你还可以做一个实验,如果你的微博时本地Ip经常登录的,那没有问题。如果是异地登录,你输入用户名后,是要你输入验证码的,如果你没有设置。比如你经常在北京登录你的微博,然后你去了上海,你登录你的微博,输入用户名,光标移开后就会提示要你输入验证码的,你可以找你非本地的朋友用它的微博用户名试试就知道了。 
所以我们在做模拟登陆时,首先要先做一个request,从服务器取回servertime 和干扰值,再来加密。加密后再重新登录。
这是新浪微博的登陆方式,它的加密应该是在浏览器这端有控件加密的。

关于淘宝,我想不会比这个简单,而且你登陆淘宝时,你的输入光标在密码框中时有的浏览器你按Tab键都是移不出来的。
你没有加密就去登陆,肯定是不会成功的。

个人意见,仅供参考 --------------------编程问答--------------------
引用 13 楼 ifvlr 的回复:
我之前做过新浪微博的模拟登陆,是在网上找到的一篇文章,代码长度至少是你这个的两倍以上。我觉得淘宝这种直接涉及钱的登陆会更加复杂。
简单说一下新浪微博的登陆吧。
新浪微博密码应该是运用的应该是RSA加密方式。它连你的用户名都加密了,不过是分别加密的,用户名应该只是用MD5之类的算法简单处理一下。用户名加密一次,以后都是这个不会变了。而密码,你每次登陆时密文都是不一样的。加密后的密文不记得是128位还是256位,总之非常长。而且新浪微博的密码加密是用了服务器时间和随机字符串加密码混合加密的,因为随机值和服务器时间一直在变,所以每次加密后的值都是不一样的。

为什么这么说:你去在电脑上登陆一下你的微博试试。当然,你需要用Chrome浏览器,火狐浏览器,或者可以带调试功能的浏览器。在你的微博登陆页面按F12键打开调试窗口,找到NetWork这个标签栏。然后输入你的微博用户名,将光标移开用户名输入框,你就会看到NetWork像后台发送了一个信息,然后又返回了一些信息,返回的这些信息里面就包含了server time和一个随机干扰值。当然,你还可以做一个实验,如果你的微博时本地Ip经常登录的,那没有问题。如果是异地登录,你输入用户名后,是要你输入验证码的,如果你没有设置。比如你经常在北京登录你的微博,然后你去了上海,你登录你的微博,输入用户名,光标移开后就会提示要你输入验证码的,你可以找你非本地的朋友用它的微博用户名试试就知道了。 
所以我们在做模拟登陆时,首先要先做一个request,从服务器取回servertime 和干扰值,再来加密。加密后再重新登录。
这是新浪微博的登陆方式,它的加密应该是在浏览器这端有控件加密的。

关于淘宝,我想不会比这个简单,而且你登陆淘宝时,你的输入光标在密码框中时有的浏览器你按Tab键都是移不出来的。
你没有加密就去登陆,肯定是不会成功的。

个人意见,仅供参考

现在获取到token值了。 。 还在尝试。 --------------------编程问答-------------------- 模拟贴吧登录回帖成功的路过
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,