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

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<String, String> map = new HashMap<String, String>();
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<String, String> 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<String, String> 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;
} }

  

java京东自动登录的更多相关文章

  1. Python实现京东自动登录

    配置好webdriver,用的是Chrome的 import cv2 import time import numpy as np from selenium import webdriver fro ...

  2. QQ模拟自动登录实现

    QQ模拟自动登录实现 本篇文章主要介绍"QQ模拟自动登录实现(带验证码)",主要涉及到java 实现QQ自动登录(带验证码)方面的内容,对于java 实现QQ自动登录(带验证码)感 ...

  3. java 自动登录代码

    javaBean的代码    package bean;    import java.io.Serializable;    public class Admin implements Serial ...

  4. java代码实现自动登录功能

    通常我们登录某网站,会有选择保存几天,或者是几个星期不用登录,之后输入该网站地址无需登录直接进入主页面,那么这就叫做自动登录,怎么实现呢,下面我以一个小例子来演示一下 登录页面:login.jsp & ...

  5. 单点登录 SSO, 自动登录 , java 加密,ssl原理, Tomcat配置SSL

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 单点登录的英文简称为SSO(single sign on),单点登录功能使得用户只要登录 ...

  6. java浏览器控件jxbrowser(简单demo模拟自动登录与点击)

    写在前面: 老大让我写个脚本自动给他写dms有一段时间了,说实话当时不知道老大指的这个脚本是什么?毕竟是做web的,难道是写个数据库sql语句脚本吗?也就放在了一边.巧了,最近一个朋友说他之前写了个程 ...

  7. [原创]java WEB学习笔记29:Cookie Demo 之自动登录

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. Java 扫描微信公众号二维码,关注并自动登录网站

    https://blog.csdn.net/qq_42851002/article/details/81327770 场景:用户扫描微信公众号的二维码,关注后自动登录网站,若已关注则直接登录. 逻辑: ...

  9. 转:实现Java Web程序的自动登录

    有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机).实现这个功能关键就是服务端要识别客户的身份.而用Cookie ...

随机推荐

  1. css hover 动画 transition:background-color 0.2s,color 0.2s; 外层套内层,正常是 里外层 鼠标上来 外层有hover,如果就想到里层hover触发外层hover,要用外层position 定义绝对定位,内层的hover跳出外层的div,这样视觉上就是两个单独的div,进行内外层联动。

    css hover 动画 transition:background-color 0.2s,color 0.2s; 外层套内层,正常是 里外层 鼠标上来 外层有hover,如果就想到里层hover触发 ...

  2. 《仙剑奇侠传柔情版》Java的简单实现(二)

    基于<仙剑奇侠传柔情版>Java的简单实现(二) 2018-12-02 by Kris 需要上次的GameFrame.class中窗口框架承载:https://www.cnblogs.co ...

  3. 蓝桥杯vip题阶乘计算

    蓝桥杯vip题阶乘计算 详细题目 输入一个正整数n,输出n!的值. 其中n!=123*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个 ...

  4. Swift 4.0 字符串(String)学习

    定义字符串常量(常量只有读操作) let lString = "constant" let lString1: String = "constant" 定义字符 ...

  5. F版本SpringCloud 3—大白话Eureka服务注册与发现

    引用:服务注册与发现,就像是租房子一样 前言 今天洛阳下雨了,唉,没有想到有裹上了羽绒服,不穿冷穿了热的尴尬温度.上学工作这么多年都在外面,家里竟然没有一件春天的外套. 日常闲聊之后,开始今天的芝士环 ...

  6. shell编程之if语句

    shell编程之if判断 目录 shell编程之if判断 1.整数比较 2.字符串比较 3.举例 1.数字比较 2.字符串比较 4.Other 1.整数比较 -eq 等于,如:if [ "$ ...

  7. udp和tcp特点 实现文件上传

    本周课程安排: 网络编程结束 并发网络开头 进程 线程 IO模型 上周内容回顾: 1.osi七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理连接层 也有人把他们归纳为五层: 应用层, 传 ...

  8. 【NLP面试QA】预训练模型

    目录 自回归语言模型与自编码语言 Bert Bert 中的预训练任务 Masked Language Model Next Sentence Prediction Bert 的 Embedding B ...

  9. sql-lib闯关1-10关

    闯关之前我们需要搭建所需环境SQLi-Labs SQLi-Labs是一个专业的SQL注入练习平台,该平台包含了以下在测试场景中常见的注入类型: 1.报错注入(联合查询) ​     1)字符型 ​   ...

  10. mysql打开general log的办法

    mysql打开general log的办法   mysql打开general log之后,所有的查询语句都可以在general log 文件中以可读的方式得到,但是这样general log文件会非常 ...