日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

滑块验证码识别 java版本

發布時間:2025/4/5 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 滑块验证码识别 java版本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/qq_19383667/article/details/77879895

好久沒有更新技術文章了,很久之前研究過滑塊驗證碼的破解,照著別人的代碼改,將其他版本的代碼改成java的,加上自己的一些研究,湊合湊合出了第一個java版本的,此版本不是控制瀏覽器進行驗證,純java控制(包含java js引擎執行js),目前都完成了,只是滑動軌跡的生成被后臺識別出是機器人,除了這個問題以外,其他的均沒有任何問題!如果誰能弄出軌跡算法出來,可以留言或者加我qq:1069478446,不勝感激?

廢話不多說,自己上代碼:

package com.test;import java.awt.Container; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URL; import java.sql.ResultSet; import java.util.ArrayList; import java.util.Random; import javax.imageio.ImageIO; import net.sf.json.JSONObject; import org.apache.http.Header; import org.apache.http.HeaderElement; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import com.util.DBUtil; public class Geek { DBUtil dbu=new DBUtil(); CloseableHttpClient httpclient = HttpClients.createDefault(); String challenge=""; String gt=""; String json=""; Random rnd = new Random(); public boolean checkVcome() { String url="http://www.tianyancha.com/company/7117464"; HttpGet httpPost=new HttpGet(url); String html=""; try { CloseableHttpResponse response = httpclient.execute(httpPost); HttpEntity entitySort = response.getEntity(); html=EntityUtils.toString(entitySort, "utf-8"); if(html.indexOf("為確認本次訪問為正常用戶行為,請您協助驗證")!=-1) return true; if(!"".equals(html.trim())) { return true; } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } public void startPama() { String url="http://www.gsxt.gov.cn/SearchItemCaptcha?v="+System.currentTimeMillis(); HttpGet httpPost=new HttpGet(url); httpPost.setHeader("Accept", "application/json, text/javascript, */*; q=0.01"); httpPost.setHeader("Connection", "keep-alive"); httpPost.setHeader("Host", "www.gsxt.gov.cn"); httpPost.setHeader("Referer", "http://www.gsxt.gov.cn/corp-query-homepage.html"); httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); httpPost.setHeader("X-Requested-With", "XMLHttpRequest"); String html=""; try { CloseableHttpResponse response = httpclient.execute(httpPost); HttpEntity entitySort = response.getEntity(); html=EntityUtils.toString(entitySort, "utf-8"); System.out.println(html); JSONObject json=JSONObject.fromObject(html); this.challenge=json.getString("challenge"); this.gt=json.getString("gt"); System.out.println("gt:"+gt); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void getpage_comp() { String url="http://api.geetest.com/get.php?gt=#{gt}&challenge=#{challenge}&product=embed&offline=false"; HttpGet httpPost=new HttpGet(url.replace("#{gt}", this.gt).replace("#{challenge}", this.challenge)); httpPost.setHeader("Connection", "Keep-Alive"); httpPost.setHeader("Host", "api.geetest.com"); httpPost.setHeader("Pragma", "no-cache"); httpPost.setHeader("Referer", "http://www.geetest.com/exp_normal"); httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"); String html=""; try { CloseableHttpResponse response = httpclient.execute(httpPost); HttpEntity entitySort = response.getEntity(); html=EntityUtils.toString(entitySort, "utf-8"); int sindex=html.indexOf("new Geetest(")+12; if(sindex<1) return; int eindex=html.indexOf(",true"); this.json=html.substring(sindex, eindex); JSONObject json=JSONObject.fromObject(this.json); this.challenge=json.getString("challenge"); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getImage(String name,String url) { System.out.println(url); try { HttpGet httpimg = new HttpGet(url); httpimg.setHeader("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"); httpimg.setHeader("Connection", "keep-alive"); httpimg.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); httpimg.setHeader("Host", "static.geetest.com"); httpimg.setHeader("Upgrade-Insecure-Requests", "1"); httpimg.setHeader("Referer", "http://www.geetest.com/exp_normal"); HttpResponse responseimg = httpclient.execute(httpimg); File file=new File("E:\\zjt\\img\\"+name+".jpg"); OutputStream out=new FileOutputStream(file); responseimg.getEntity().writeTo(out); out.close(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "E:\\zjt\\img\\"+name+".jpg"; } /** * 合成指定的多張圖片到一張圖片 * * @param imgSrcList 圖片的地址列表 * @param topLeftPointList 每張小圖片的偏移量 * @param countOfLine 每行的小圖片個數 * @param cutWidth 每張小圖片截取的寬度(像素) * @param cutHeight 每張小圖片截取的高度(像素) * @param savePath 合并后圖片的保存路徑 * @param subfix 合并后圖片的后綴 * @return 是否合并成功 */ public static boolean combineImages(ArrayList<String> imgSrcList, ArrayList<String[]> topLeftPointList, int countOfLine, int cutWidth, int cutHeight, String savePath, String subfix) { if (imgSrcList == null || savePath == null || savePath.trim().length() == 0) return false; BufferedImage lastImage = new BufferedImage(cutWidth * countOfLine, cutHeight * ((int) (Math.floor(imgSrcList.size() / countOfLine))), BufferedImage.TYPE_INT_RGB); String prevSrc = ""; BufferedImage prevImage = null; try { for (int i = 0; i < imgSrcList.size(); i++) { String src = imgSrcList.get(i); BufferedImage image; if (src.equals(prevSrc)) image = prevImage; else { if (src.trim().toLowerCase().startsWith("http")) image = ImageIO.read(new URL(src)); else image = ImageIO.read(new File(src)); prevSrc = src; prevImage = image; } if (image == null) continue; String[] topLeftPoint = topLeftPointList.get(i); int[] pixArray = image.getRGB(0 - Integer.parseInt(topLeftPoint[0].trim()), 0 - Integer.parseInt(topLeftPoint[1].trim()), cutWidth, cutHeight, null, 0, cutWidth); int startX = ((i) % countOfLine) * cutWidth; int startY = ((i) / countOfLine) * cutHeight; lastImage.setRGB(startX, startY, cutWidth, cutHeight, pixArray, 0, cutWidth); } File file = new File(savePath); return ImageIO.write(lastImage, subfix, file); } catch (Exception ex) { ex.printStackTrace(); return false; } } /** * 通過背景的完整圖片與有缺失的圖片進行對比,得到偏移量 * @param imgSrc1 有缺失的圖片路徑 * @param imgSrc2 完整的背景圖路徑 * @return */ public static int findXDiffRectangeOfTwoImage(String imgSrc1, String imgSrc2) { try { BufferedImage image1 = ImageIO.read(new File(imgSrc1)); BufferedImage image2 = ImageIO.read(new File(imgSrc2)); int width1 = image1.getWidth(); int height1 = image1.getHeight(); int width2 = image2.getWidth(); int height2 = image2.getHeight(); if (width1 != width2) return -1; if (height1 != height2) return -1; int left = 0; /** * 從左至右掃描 */ boolean flag = false; for (int i = 0; i < width1; i++) { for (int j = 0; j < height1; j++) if (isPixelNotEqual(image1, image2, i, j)) { left = i; flag = true; break; } if (flag) break; } return left; } catch (Exception ex) { ex.printStackTrace(); return -1; } } private static boolean

轉載于:https://www.cnblogs.com/davidwang456/articles/8662076.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的滑块验证码识别 java版本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久网站免费看 | 午夜电影你懂的 | 1000部啪啪未满十八勿入 | 亚洲精品一区二区三区区别 | 操女人视频网站 | 亚洲少妇30p | www.com亚洲 | 国产精品免费av一区二区三区 | 日日操夜夜爱 | 精品不卡视频 | 91大神精品在线 | 一区二区精品视频在线观看 | av免费一区| 欧美性猛交xxxx乱大交俱乐部 | 欧美sm凌虐视频网站 | 一道本久久 | 午夜操一操| av三级网站 | 国产免费成人av | 黄色片免费看 | 成人三级晚上看 | 亚欧毛片 | 麻豆一区二区三区精品视频 | 久久1234 | 天天干b| 16—17女人毛片 | 男生操女生在线观看 | 噼里啪啦国语电影 | 成人动作片 | 精品日本一区二区三区 | 国产一区二区三区精品在线观看 | 日本免费不卡一区二区 | 国产精品极品白嫩 | 久久亚洲综合色 | 国产亚洲精品久久久久久青梅 | 黑人巨大精品欧美一区二区 | 精品无人区无码乱码毛片国产 | 欧美黑人一区二区三区 | 亚洲精品高清视频 | 欧美 日韩 国产 一区 | 特级西西444www大精品视频免费看 | 日本黄色动态图 | 一级全黄裸体免费视频 | 在线观看sm | 丰满少妇在线观看资源站 | 精品乱人伦一区二区三区 | 黑森林av| 欧美午夜网 | 精品成人国产 | 宿舍女女闺蜜调教羞辱 | 日韩欧美大陆 | 国产精品一二三四五 | 国产三级精品三级在线 | 韩国三级中文字幕hd浴缸戏 | 欧美日韩亚洲另类 | 九九视频这里只有精品 | 性欧美日本 | 一级a性色生活片久久毛片 爱爱高潮视频 | 妺妺窝人体色www在线小说 | 国产精品二区一区二区aⅴ 一卡二卡三卡在线观看 | 不卡一二三 | 日韩69视频| 人妻av无码一区二区三区 | 日韩精品在线观看网站 | 91传媒理伦片在线观看 | 日本免费观看视频 | jizzjizzjizz亚洲女 | 24小时日本在线www免费的 | 亚洲巨乳av | 天天欲色 | 看免费黄色片 | 精品人妻一区二区三区视频 | 午夜激情在线播放 | 美女下部无遮挡 | 伊人中文网 | 一区二区三区在线免费播放 | 成人在线免费网址 | 一区二区在线免费观看视频 | 亚洲精品一区二区三区影院忠贞 | 国产学生美女无遮拦高潮视频 | 俺也去五月婷婷 | 日韩男女视频 | 欧美日韩日本国产 | 91av久久 | 中国女人内谢69xxxx | 日韩视频在线观看一区 | 青青草官网| 日韩欧美精品国产 | 国产精品免费一区二区三区四区 | 国产孕交| 深夜在线免费视频 | 国产成人aⅴ | 伊人久久成人网 | 在线视频观看你懂得 | 丝袜调教91porn | 久久久久久久久亚洲 | 女人的天堂网 | 亚洲搞av | 日韩精品在线观看免费 |