热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java使用HTTPS登录网站代码实现

步骤一,获得网站的登录URL,及Form页元数据这点可以通过Chrome的F12按键,检查登录时发送的数据包获得(【PreserveLog】建议打勾)。以登录京东网站为例,示范如下

步骤一,获得网站的登录URL,及Form页元数据

这点可以通过Chrome的F12按键,检查登录时发送的数据包获得(【Preserve Log】建议打勾)。以登录京东网站为例,示范如下:


1,【Network】标签页,【Headers】项,可以查看登录URL

鼠标右键单击【Request URL】参数,选择【Copy Value】即可复制值。


 2,【Network】标签页,【Payload】项,可以获取Form页元数据

同样地,鼠标右键单击各参数,选择【Copy Value】即可复制值。

 


 步骤二,编写登录代码

package com.clzhang.sample.net;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
public class Login2JD {
// 登录URL
public static final String LOGIN_URL = "https://passport.jd.com/uc/loginService?uuid=a4bc68e0-2163-45e7-a60e-2bad2d90bb17<ype=logout&ReturnUrl=https://order.jd.com/center/list.action&r=0.5708092007940808&version=2015";
@Test
public void login() throws IOException {
// 获取连接客户端工具
CloseableHttpClient httpClient = HttpClients.createDefault();
// 参数封装对象
List params = new ArrayList();
try {
params.add(
new BasicNameValuePair("uuid", "a4bc68e0-2163-45e7-a60e-2bad2d90bb17"));
params.add(
new BasicNameValuePair("eid",
"UGLYRKJMGDSAYCBIQEFQP4QZ3AKIUDCPLHPCY5BEFAL55RMV5XZ3S7RCPNXSWKDD6IEWOMV4EYTCGOFIKTBWIHD5BM"));
params.add(
new BasicNameValuePair("fp", "fb63ee37f64f02acb247dbbd015c066a"));
params.add(
new BasicNameValuePair("_t", "_t"));
params.add(
new BasicNameValuePair("loginType", "c"));
params.add(
new BasicNameValuePair("loginname", "13801022222"));
params.add(
new BasicNameValuePair("nloginpwd",
"fh/NyoAVnxRwqLRyZOdyehdjaldHfWmpPwioppQMhP2Z4AoBYhUklddJJuhLndlaMAvYF0Ijq6pI95r/JuqiKloPOfBnmA+Hu7kKW6zPv71MocU8sxI0syN+YhujdkNkl9kahpZjZw="));
params.add(
new BasicNameValuePair("authcode", "fcd912b70d024852a8ecb98e8db02019"));
params.add(
new BasicNameValuePair("pubKey",
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB"));
params.add(
new BasicNameValuePair("sa_token",
"B68C442BE645754F33277E701208059080DD726A94A73F76DEC3053A838549C06EB7D3797CE1C5BBE7C2B2EF9CA7D467C3C76FF0A28885EE64B432120BA9B13D348C69B7D2A54084AD0AF9F604987E3FF4F05CFA833594DEAA638A1460132F8E4FC41F9984A0550F77FF3A51047D9FFA6937B2323ADE6CDB3A98776094AD46AFC0D104BE5A33FD4B2D219E65930F424CA62E9A76B0553DAFABE006ED3256B130266A76FAF5CCE3ADAB479A1B91EBE72C1A4BF98524844B1E83C710FCA76C98445A859CE2250B09F1F46964521C4584F34AA325E2CCB21063230D888A26FF50EA53E8585AC059B0167F5C76E28EC36A30964D34551EDD3242C4BDF09CB4B5A3CCBBF039E1998C8FC1525EF9FEDC38B0F16718EA67EA49BF24BF2FDDA53EEC8CCCB135E6BAF4D8445ECC4313595E9D5AC1E67CADD48C6334B8300DB8E65232CD1D04D9FDFE6B8416AB0E96556FC9C5128E6A83968900DFAD1DC70F8BE27D222C5AC6F5008B02D00D3A91E1F684EA8F8795CA3F94A60E91608C790FCC52A0DE0EBB4FDB7E3EE2611370D8A13471CC91D3740F35D400D7028ABFE18C1A1D918568CE6130E2830997AA1B8BEDAA754CC33ECABA5C41BB1340E6ABD924E215E2BFC0F19EC35C5B656DFE5E55B7B3858A3819151521D320A569E8945F10348A454AD34044EEE8E3E2FD7F7415F83F0187923BA39E51007B5E4180D131FA3F1CA307A0C2E6FAEAF56178E1147FC6DAD1B6770A616032701B391E17A308EDA2AE8CD969E8"));
params.add(
new BasicNameValuePair("seqSid", "215692539242879832"));
params.add(
new BasicNameValuePair("useSlideAuthCode", "1"));
// 创建POST请求对象
HttpPost httpPost = new HttpPost(LOGIN_URL);
httpPost.addHeader(
"Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
httpPost.addHeader(
"User-Agent:",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36");
httpPost.setEntity(
new UrlEncodedFormEntity(params, "UTF-8"));
// 执行请求
CloseableHttpResponse respOnse= httpClient.execute(httpPost);
HttpEntity entity
= response.getEntity();
int code = response.getStatusLine().getStatusCode();
System.out.println(
"StatusCode: " + code);
String entityStr
= EntityUtils.toString(entity, "UTF-8");
System.out.println(
"返回结果: " + entityStr);
response.close();
}
finally {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
}
}
}

步骤三,引用相关包

修改pom.xml,加入如下内容:

<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13version>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-lang3artifactId>
<version>3.4version>
dependency>
<dependency>
<groupId>org.apache.httpcomponentsgroupId>
<artifactId>httpclientartifactId>
<version>4.5.2version>
dependency>
<dependency>
<groupId>org.apache.httpcomponentsgroupId>
<artifactId>httpmimeartifactId>
<version>4.5.2version>
dependency>

补充,如果是简单的HPPS网站登录,可以用如下方式


/**
* 登录到网站的子程序,返回CloseableHttpClient
*
@return 登录成功,返回CloseableHttpClient对象
*
@throws Exception
*/
private CloseableHttpClient login2JHL() throws Exception {
CloseableHttpClient httpClient
= HttpClients.createDefault();
// 创建POST请求对象
HttpPost httpPost = new HttpPost(LOGIN_URL);
httpPost.addHeader(
"Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
httpPost.addHeader(
"User-Agent:",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36");
List
params = new ArrayList();
params.add(
new BasicNameValuePair("username", "myuser1"));
params.add(
new BasicNameValuePair("password", "mypassword1"));
// 使用URL实体转换工具
UrlEncodedFormEntity entityParam = new UrlEncodedFormEntity(params, "UTF-8");
httpPost.setEntity(entityParam);
// 执行请求
CloseableHttpResponse respOnse= httpClient.execute(httpPost);
// 获得响应的实体对象
// HttpEntity entity = response.getEntity();
// int code = response.getStatusLine().getStatusCode();
// String entityStr = EntityUtils.toString(entity, "UTF-8");
// System.out.println("StatusCode: " + code);
// System.out.println("返回结果: " + entityStr);

response.close();
return httpClient;
}

 



推荐阅读
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • rabbitmq杂谈
    rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?同一个会话,consumerTag是固定的可以做此会话的名字,deliveryTag每次接 ... [详细]
  • Docker安装Rabbitmq(配合宝塔)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker安装Rabbitmq(配合宝塔)相关的知识,希望对你有一定的参考价值。一、事前准备 ... [详细]
  • 消息中间件RabbitMQ 高级特性之消费端ACK与重回队列
    什么是消费端的ACK和重回队列?消费端的手工ACK和NACK消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿如果由于服务器宕机等严重问题 ... [详细]
  • 节省成本配置网站HTTPS加密网址(6个免费SSL证书申请网站)
    节省成本配置网站HTTPS加密网址(6个免费SSL证书申请网站)在这篇文章中,老左整理目前看到的一些免费SSL证书,如果有需要降低成本配置网站HTTPS加密的,可以选择使用,需要的 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有