58同城自动登录。。分享给大家!

pl3121605999 2011-09-10 09:25:28
加精
http://topic.csdn.net/u/20110904/14/8a1ba2c6-7211-4412-aafa-9de4e5982ab9.html看到有人发了个帖子 问58同城登录的问题,我闲的无聊就去58上抓了下包看了下,主要就是p1和p2这两个参数,而两个参数是密码加密后的
结果,去看它的js是怎么加密的,可是它的js是经过压缩过的,只有一行代码,很难找到那个加密的方法,然后我就把它复制下来然后解了下压,结果一眼就看到那个方法,但是他的加密算法很长,用java代码去模拟的话估计很麻烦还容易出错,嘿嘿。所以我就想到了java 调用 js, 说实话这个以前还没怎么用过,不过用过之后感觉确实用着挺爽的,结果我就把关于算法那些方法全部复制了下来,放到一个文件中,然后用java直接传值调用,拿到加密后的密码 ,然后模拟表单提交,果然OK了,58同城这个网站的登录确实比其他一些网站要麻烦一些,不过知道方法之后还是挺简单的,嘿嘿!!
现在上代码 大家看看 。。

我里面用到了我自己写的一些类,大家想看代码的话
到我这个帖子看看就行了:http://topic.csdn.net/u/20110829/17/3650098a-8a43-4e7d-92e6-406a384e646a.html




public class WuBa {

public String test(String name,String pass) throws Exception{
//读取JS文件
BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream(new File("f:/wuba.js"))));

//调用js。。这里是关键 啊
ScriptEngineManager scriptManager = new ScriptEngineManager();
ScriptEngine js = scriptManager.getEngineByExtension("js");
//执行JS
js.eval(buf);
long date = new Date().getTime();
String time = String.valueOf(date).substring(5, 11);
Invocable inv2 = (Invocable) js;

//p1的获取 执行js中的方法
String p1 = (String) inv2.invokeFunction("getm32str",pass,time);

//p2的获取
String m32 = (String) inv2.invokeFunction("hex_md5",pass);
m32 = m32.substring(8, 24);

String result = "";
for (int i = m32.length() - 1; i >= 0; i--) {
result += m32.charAt(i);
}

String p2 = (String)inv2.invokeFunction("getm16str",result,time);

//组装参数
HashMap<String, String> params = new HashMap<String, String>();
params.put("path", "http://xa.58.com/?utm_source=pinpaizhuanqu&utm_medium=wf&utm_campaign=bp-title");
params.put("p1", p1);
params.put("p2", p2);
params.put("timesign", String.valueOf(date));
params.put("username", name);
params.put("mobile", "手机号");
params.put("password", "password");
params.put("remember", "on");
//发送请求并获取cookie
String cookie = SendRequest.sendGet("http://passport.58.com/dologin", null, params, "utf-8").getCookie();
return cookie;
}

public static void main(String[] args) throws Exception {
String cookie = new WuBa().test("majia200", "majia123");
HashMap<String, String> header = new HashMap<String, String>();
header.put("Cookie",cookie);

//登陆我的中心 验证是否登陆成功!
System.out.println(EntityUtils.toString( SendRequest.sendGet("http://my.58.com/", header, null, "utf-8").getHttpEntity(),"utf-8"));

}
}
...全文
20997 238 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
238 条回复
切换为时间正序
请发表友善的回复…
发表回复
硬骨 2014-05-06
  • 打赏
  • 举报
回复
路过。。。哇哦
ken83220144 2014-04-24
  • 打赏
  • 举报
回复
顶下 不错 挺牛的
wusuobuaiai 2013-04-22
  • 打赏
  • 举报
回复
闲着蛋疼的牛人
失落夏天 2013-01-29
  • 打赏
  • 举报
回复
留个脚印,明天看
zhadan9527 2013-01-22
  • 打赏
  • 举报
回复
Mark,感谢分享!
qingqingsunzhijie 2013-01-14
  • 打赏
  • 举报
回复
有没有C#语言的呢??????????求大神!!!!!!!!!!!!!!!!!
苏飞论坛 2012-12-26
  • 打赏
  • 举报
回复
usercai 2012-12-24
  • 打赏
  • 举报
回复
回复有分,我就回复了
zhoulin416416 2012-11-14
  • 打赏
  • 举报
回复
我也想学这个了,有空自己研究研究
zhoulin416416 2012-11-14
  • 打赏
  • 举报
回复
我也想学这个了,有空自己研究研究
pl3121605999 2012-10-23
  • 打赏
  • 举报
回复
囧、这都是一年前的 弄的 了 。。。 失效时正常的。。不过依照 方法应该还是米问题的!
「已注销」 2012-10-23
  • 打赏
  • 举报
回复
收藏研究
werey 2012-10-22
  • 打赏
  • 举报
回复
这个js在他的页面源码里好像没有提到。不知道是怎么实现调用函数的。
werey 2012-10-22
  • 打赏
  • 举报
回复
通过工具可以找到是这个链接:
https://passport.58.com/js/v6/source/828ef34c77a2cbed693ba874ce570dfe.js?version=0.0.2
werey 2012-10-22
  • 打赏
  • 举报
回复
如何自动下载这个js文件啊?或者说js文件网络地址如何得到的呢?
SatoshiNakamoto 2012-10-21
  • 打赏
  • 举报
回复
感谢分享,楼主辛苦了哈
  • 打赏
  • 举报
回复
为什么生成的P1和原来的P1数值不一样 导致登陆失败
java123object 2012-08-23
  • 打赏
  • 举报
回复
登录后,楼主能获取账号上的余额吗?
条款大爷 2012-07-24
  • 打赏
  • 举报
回复
首先,楼主威武。
请教个问题,我按照你的方法在人人网站发状态,用HttpFox查看到发状态的报头是这样的,但是用程序调用后发现返回的是错误的状态码。请问是怎么回事?
我设置了Referer、Host、Cookie,Request-Line也设置还是不行。
再者,查看的报头是这样的,但是看人人网发状态网页的源码,发现它的form表单的action地址是http://shell.renren.com/258047188/status。
请不吝指教,谢过!

(Request-Line) POST /258047188/status HTTP/1.1
Host shell.renren.com
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Referer http://shell.renren.com/ajaxproxy.htm
Content-Length 83
Cookie ...
Pragma no-cache
Cache-Control no-cache
anzhennuantong 2012-06-13
  • 打赏
  • 举报
回复
兄弟模拟登录58后 发布房源总是提示 标题不足6个字

还有就是:

-----------------------------58292677715573
Content-Disposition: form-data; name="title"

方式的数据如何用httpClient提交
加载更多回复(204)

67,545

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧