(HttpClient技术)(58同城系列)58同城登录

    已经有很长时间,想开发一个58同城的系列软件了,对于HttpClient技术的钻研和进步,我觉得,我觉得自己还是有能力胜任的,终于有一个契机(至于什么原因呢,暂且保密,说出来,太俗了),这一星期来,抓了不少包,终于搞定了58同城,从登陆到发帖的代码,那么下面,我分享一个58同城的登录代码。(文章里面,用到了这么多的58同城的关键字),会不会被封杀呢,暂且不议,下面开始进入正题:

    技术:HttpClient(易语言的只能做参考了)

    抓包工具:HttpClient

    抓包对象:58同城

    首先:进入登录页面:http://passport.58.com/login?path=http://my.58.com,开始抓包,进入后发现,密码被进行了三次加密,分别是p1,p2,p3,这三次加密,前面的2次还是比较简单的,加密代码,都在js里面可以找到,后面的p3字段的加密,一直没搞明白,开始研究...,经过一小时奋战,终于发现,原来是老的rsa加密啊,那么就简单了,rsa加密算法,我这里存了一大堆了,很多网站,都用了这个加密技术,那么总体来讲,就没啥难度了,下面贴登录代码主体部分:

public class Login_58 {
public Map get(String username,String password,String ip ,int port,String uuname,String uuword,boolean isByuu){

List list = new ArrayList() ;
boolean re = false ;
String cookiess = "" ;
String sid = "" ;
Map remap = new HashMap();

int codeID01 = -1 ;

String ret = "" ;
String errorinfo = "" ;
DefaultHttpClient httpClient = null ;
DefaultHttpClient defaultClient;
HttpParams httpParams = new BasicHttpParams();
// HttpConnectionParams.
ConnManagerParams.setMaxTotalConnections(httpParams, 80);
ConnManagerParams.setTimeout(httpParams, 25000);
//每个路由的最大链接个数,标志对同一站点的并发请求
ConnPerRouteBean connPerRoute = new ConnPerRouteBean(100);
ConnManagerParams.setMaxConnectionsPerRoute(httpParams, connPerRoute);

HttpConnectionParams.setConnectionTimeout(httpParams,25000);
HttpConnectionParams.setSoTimeout(httpParams, 50000);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ClientConnectionManagerconnectionManager = new ThreadSafeClientConnManager(httpParams,registry);
// httpParams.setParameter(ClientPNames.HANDLE_REDIRECTS,false);
defaultClient = new DefaultHttpClient(connectionManager, httpParams);
defaultClient.getParams().setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 20*1024);
HttpClientParams.setCookiePolicy(defaultClient.getParams(),CookiePolicy.BROWSER_COMPATIBILITY);
//defaultClient.getParams().setCookiePolicy();
httpClient = defaultClient ;

if(ip!=null && !ip.equals("")){
HttpHost proxy = new HttpHost(ip,port);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
}

HttpGet g1 = null;
HttpPost g3 = null;


try {
g1 = new HttpGet("http://passport.58.com/login?path=http://my.58.com") ;

g1.setHeader("Accept", "text/html, application/xhtml+xml, */*") ;
g1.setHeader("Accept-Language", "zh-CN") ;
g1.setHeader("Proxy-Connection", "Keep-Alive") ;
g1.setHeader("Host", "passport.58.com") ;//Proxy-Connection: keep-alive
g1.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)") ;
//g1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8") ;
HttpResponse response2 = httpClient.execute(g1);

String sg1 = dump(response2.getEntity(),"utf-8") ;
// sg1 = new String(sg1.getBytes("ISO-8859-1"),"GBK");

// System.out.println(sg1) ;

if(response2.getStatusLine().getStatusCode() == 200 && sg1.indexOf("id=\"ptk\"")!=-1 && sg1.indexOf("id=\"cd\"")!=-1 && sg1.indexOf("name=\"path\"")!=-1 && sg1.indexOf("$(\"#p3\").val(encryptString(")!=-1){
String cookiesimage01 = "" ;

System.out.println(cookiesimage01) ;

String ptk = "" ;
String cd = "" ;
String path = "" ;


String v3 = "" ;
String v4 = "" ;

sg1 = sg1.substring(sg1.

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值