介绍
如果在java中硒和OpenCV破解易盾滑动验证码?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强>网易易盾:dun.163.com 强>
*,验证码地址:https://dun.163.com/trial/jigsaw *,使用OpenCv模板匹配 + *,Java Selenium +, OpenCV
/* * ,*模拟人工移动 ,* @param 司机 ,* @param 元素页面滑块 ,* @param 距离需要移动距离 ,*/public static  void 移动(WebDriver 司机,WebElement 元素,,int 距离),throws InterruptedException { int randomTime =, 0; if (distance 祝辞,90),{ 时间=randomTime 250; },else if (distance 祝辞,80,,,,distance & lt;=, 90), { 时间=randomTime 150; } List<>强操作过程强>
,*,获取网易验证滑动距离 *大敌; ,* @return ,*/public static  String dllPath =,“C://铬//opencv_java440.dll"; public double  getDistance (String 节,String sUrl), { System.load (dllPath); File bFile =, new 文件(“C:/EasyDun_b.png"); File sFile =, new 文件(“C:/EasyDun_s.png"); try { FileUtils.copyURLToFile (new URL(节),bFile); FileUtils.copyURLToFile (new URL (sUrl), sFile); BufferedImage bgBI =, ImageIO.read (bFile); BufferedImage sBI =, ImageIO.read (sFile);//,裁剪 cropImage (bgBI,印度国家银行,,bFile,, sFile); Mat s_mat =, Imgcodecs.imread (sFile.getPath ()); Mat b_mat =, Imgcodecs.imread (bFile.getPath ());//阴影部分为黑底时需要转灰度和二值化,为白底时不需要//,转灰度图像 Mat s_newMat =, new 垫(); Imgproc.cvtColor (s_mat, s_newMat, Imgproc.COLOR_BGR2GRAY);//,二值化图像 (二值化s_newMat); Imgcodecs.imwrite (sFile.getPath (),, s_newMat); int result_rows =, b_mat.rows(),安康;s_mat.rows (), +, 1; int result_cols =, b_mat.cols(),安康;s_mat.cols (), +, 1; Mat g_result =, new 垫(result_rows, result_cols,, CvType.CV_32FC1); Imgproc.matchTemplate (b_mat, s_mat, g_result,, Imgproc.TM_SQDIFF);,//,归一化平方差匹配法TM_SQDIFF 相关系数匹配法TM_CCOEFF Core.normalize (g_result, g_result,, 0,, 1,, Core.NORM_MINMAX,, 1,, new 垫()); Point matchLocation =, new 点(); MinMaxLocResult mmlr =, Core.minMaxLoc (g_result); 时间=matchLocation mmlr.maxLoc;,//,此处使用maxLoc还是minLoc取决于使用的匹配算法 Imgproc.rectangle (b_mat, matchLocation, new 点(时间+ matchLocation.x s_mat.cols (),, matchLocation.y +, s_mat.rows ()),, new 标量(0,,255,,0,0)); Imgcodecs.imwrite (bFile.getPath (),, b_mat); return matchLocation.x  +, s_mat.cols(),安康;sBI.getWidth (), +, 12; },catch (Throwable e), { e.printStackTrace (); return 0; },{finally ,bFile.delete (); ,sFile.delete (); } }/* * ,*图片亮度调整 *大敌; ,* @param 形象 ,* @param 参数 ,* @throws IOException ,*/public void  bloding (BufferedImage 形象,,int 参数),throws IOException { if (image ==, null), { 返回; },{else int , rgb, R, G, B; null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如果在java中硒和OpenCV破解易盾滑动验证码