java 模拟登录含验证码

其实一直有个hacker的心,尼玛没有hacker的命啊!

心血来潮想试试用java 如何模拟登录,在网上找了很久的资料,自己大体实现了这个功能。

第一步:获取网站登录的验证码,同时要或许cookie中的JSESSIONID

第二步:识别验证码

第三步:post 提交用户名,密码,验证码,cookie 就能实现登录了。


下面一个一个解释:

首先http是无状态的,服务器要识别用户主要靠cookie里面的JSESSIONID,如果没有它我们无法实现带验证码的登录,所以我们在获取

验证码的同时要或许cookie

然后,将获得验证码保存到本地文件,这里识别验证码是个难题,关于验证码的识别大家参考这个地址:验证码

里面讲解了识别验证码的步骤,还有大家可以掉用百度的图像识别的API不过识别率真心一般般,验证码的识别大部分都要

基于图像识别,或者AI之的高深技术了,我的里面也只是从网上copy过来的(我用的是tess4j),只能识别简单的,要识别高级些的还要自己去研究下

最后,我们有了验证码,有了cookie 直接java post 表单就好了,需要什么参数post 什么就好了。


登录后,能干什么?爬网站数据?

知道用户名,通过这个方式进行暴力破解密码

其他的想不到~ 知识有限!


下面是整体功能的代码:

package com.kail.or;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.imageio.ImageIO;

import org.apache.http.Consts;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.client.protocol.HttpClientContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;

import net.sourceforge.tess4j.Tesseract1;
import net.sourceforge.tess4j.TesseractException;

public class CodeProcess {

	private static final String fileName = "captcha.jpg";

	//根据实际验证码的色彩来判断哪里要变成白色
	public static int isWhite(int colorInt) {
		Color color = new Color(colorInt);
		if (color.getRed() + color.getGreen() + color.getBlue() > 300) {  //根据实际情况修改这里的300
			return 1;
		}
		return 0;
	}

	//根据实际验证码的色彩来判断哪里要变成黑色
	public static int isBlack(int colorInt) {
		Color color =
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值