模拟京东登陆 java_java京东自动登录

这篇博客介绍了一个使用Java模拟登录京东的程序,包括获取网页元素、填充登录信息、处理验证码等步骤。博主参考了其他资源并实现了自动通过验证码的功能,验证码识别部分借助了外部平台若快。
摘要由CSDN通过智能技术生成

大部分代码都是参考的这边,我只是在他的逻辑上实现了自动通过验证码,放上主逻辑的代码吧,图片识别我用的若快,可以去接其他平台

https://blog.csdn.net/u013232789/article/details/74456204?locationNum=5&fps=1

public synchronized boolean login() {

//判断是否已登录

String verify = HttpClientUtil.get("https://home.jd.com/getUserVerifyRight.action");

if (verify.length() < 200) {

return true;

}

try {

Document doc = Jsoup.parse(HttpClientUtil.get("https://passport.jd.com/new/login.aspx"));

Thread.sleep(1000);

Elements elements = doc.select("form[id=formlogin] input[type=hidden]");

Map map = new HashMap();

String k, v;

for (Element input : elements) {

k = input.attr("name");

v = input.attr("value");

if (StringUtils.isNotBlank(k)) {

map.put(k, v);

System.out.println(input);

}

}

map.put("loginname", keyValueMap.get("JDAccount"));

map.put("nloginpwd", keyValueMap.get("JDPassword"));

map.put("eid",

"RXI4RZELZBUFTKRYDTWZHA734GHXAKCA5SJQSPGLJ2RXCIZUT3PAYXSRGSC57USYLK6432Z7WJW36ZEEGVWMLILT3E");

map.put("fp", "ccbe046c9993c80f4838e591159ce563");

String result = HttpClientUtil.get(

"https://seq.jd.com/jseqf.html?bizId=passport_jd_com_login_pc&platform=js&version=1");

Thread.sleep(1000);

String pattern = "sessionId=.+_jdtdseq_config_data";

// 创建 Pattern 对象

Pattern p = Pattern.compile(pattern);

Matcher m = p.matcher(result);

if (m.find()) {

System.out.println(m.group().substring(11, 29));

map.put("seqSid", m.group().substring(11, 29));

}

String url = "https://passport.jd.com/uc/loginService?";

url = url + "&uuid=" + map.get("uuid") + "&r=" + Math.random() + "&version=2015";

System.out.println("url: " + url);

String post = HttpClientUtil.post(url, map);

System.out.println(post);

String ans = decodeUnicode(post);

System.out.println(ans);

if (ans.contains("emptyAuthcode")) {

String authUrl = "https://authcode.jd.com/verify/image";

Map param = new HashMap<>();

param.put("a", "1");

param.put("acid", map.get("uuid"));

param.put("uid", map.get("uuid"));

param.put("yys", String.valueOf(System.currentTimeMillis()));

Map header = new HashMap<>();

header.put("Referer", "https://passport.jd.com/new/login.aspx");

HttpResponse response = HttpClientUtil.getForResponse(authUrl, param, header);

String authCode = RuoKuai.createByPost(keyValueMap.get("RKAccount"), keyValueMap.get("RKPassword"),

response.getEntity().getContent());

System.out.println(authCode);

map.put("authcode", authCode);

ans = decodeUnicode(HttpClientUtil.post(url, map));

log.info(ans);

}

if (ans.contains("success")) {

return true;

} else {

return false;

}

} catch (Exception e) {

log.error(TypeUtil.getErrorInfoFromException(e));

return false;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值