- 浏览: 243713 次
- 性别:
- 来自: 深圳
最新评论
-
gome_2016_lq:
大于等于就相当于 !小于。换一种思路也可以解决
慎用Date的after和before -
Haydroid:
liubin_ 写道地方法
jquery的ajax提交时“加载中”提示的处理方法 -
Haydroid:
...
jquery的ajax提交时“加载中”提示的处理方法 -
小宇宙_WZY:
...
java 多个if 和多个else if 的区别 -
liubin_:
地方法
jquery的ajax提交时“加载中”提示的处理方法
通过几天时间还是不能破解掉验证码,但是可以通过人工输入实现,这样并没有达到我想要的结果,但是还是记录下来,供大家参考,
private static Log log = LogFactory.getLog(HttpClientMail.class); public static boolean query(String code,String key) { boolean result = false; String indexurl = "http://app.szaic.gov.cn/CheckPage.WebUI/Index.aspx?PURL=http%3a%2f%2fapp02.szaic.gov.cn%2fWERMIS2.webui%2fWebPages%2fAIC%2fTradeSearch.aspx"; String sendurl = "http://app02.szaic.gov.cn/WERMIS2.webui/WebPages/AIC/TradeSearch.aspx"; String codeurl="http://app02.szaic.gov.cn/WERMIS2.webui/WebPages/WebRegUser/CheckCode.aspx"; try{ // 需登陆后访问的 Url HttpClient httpClient = new HttpClient(); log.debug("HttpClientLogin.getBroadbandNewNo(): 001: postMethod: "); GetMethod getMethod = new GetMethod(indexurl); //设置参数 NameValuePair[] data = { new NameValuePair("PUTL", "http://app02.szaic.gov.cn/WERMIS2.webui/WebPages/AIC/TradeSearch.aspx"), }; getMethod.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); getMethod.setRequestHeader("Accept-Encoding","gzip, deflate"); getMethod.setRequestHeader("Accept-Language", "zh-cn"); getMethod.setRequestHeader("Connection", "Keep-Alive"); getMethod.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA)"); getMethod.setQueryString(data); //执行 httpClient.executeMethod(getMethod); String getData = new String(getMethod.getResponseBody(),"UTF-8"); //-----------------------------访问首页,获取cookie---------------------------------------------- PostMethod postMethod = new PostMethod(sendurl); //设置参数 NameValuePair[] data1 = { new NameValuePair("hfIp", "121.15.133.155"), }; postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); postMethod.setRequestHeader("Referer", indexurl); postMethod.setRequestBody(data1); httpClient.executeMethod(postMethod); //获取cookie Cookie[] cookies = httpClient.getState().getCookies(); String cookie = ""; for (Cookie c : cookies) { cookie += c.toString() + ";"; } getData = new String(postMethod.getResponseBody(),"UTF-8"); //-----------------------------获取验证码--------------------------------------------- GetMethod getMethod2 = new GetMethod(codeurl); getMethod2.setRequestHeader("cookie",cookie); //执行 httpClient.executeMethod(getMethod2); code = savegif(getMethod2); //------------------------关键字查询操作------------------------- PostMethod postMethod1 = new PostMethod(sendurl); //设置参数 NameValuePair[] data2 = { new NameValuePair("__EVENTARGUMENT", ""), new NameValuePair("__EVENTTARGET", "txtCheckCode"), new NameValuePair("__LASTFOCUS", ""), new NameValuePair("__VIEWSTATE", "Zb73qiSbM0qiPYhYIhU/u9IaFjmjc94zZ4OMyL7PGuex366gM1OHJNbPkuAZeWaZjHuqe923Vrjzn6mrgkcG3QUlepbFyvH4YoI24Kn18xBl+SqpQ6lY8hlKjkiPSJm5SleMQd3QDZ37d3qhGpCgOBvMmlrFt1y898uMkbco0whDJqxHRhlOiIIIhlQuOFvCZyq9+LzedTx5DQ+GmSUHgKJ0669O0LcFZMj5PofIl1bGbiRg5JiSjcq8hfovEQo843plLBzUKtdU/oEMvGcBABu19Zk20RpUicTEy56rWMhX1aGk0OcgEdFYieNhPYa0y5G0RjRWqvBXziV+SGUa2rio8EEqEcUoqRgQ3a1P/WIQGzMq8XofT/ACcsp+OWC2p2LguOQkhciqRBRns8I7mwWgiIAJf8pxJ26Jq3pozNECtomCg7jTAGfDftTMZv83gVTFchExwF7r1qCbfQc5Cs/mT1GgLtRMn4nvwOCCGUeCHCVCeyH8nLp16nIAXLpm00xdjbx2m8amwXzOu87tBbiqRejNCJES5e/VqSB42MT8bKs/Y5pxdC6mJ7fyW1RBruXo/1Q54JEANZKrA281OpzlrVks3/X3q4OOCaHrlXBt9znkEA9rgEjkXOF+4muGMgdjerzHZAnY1YKlo04fS7KPojZChQekj77yotEONp++1NU33yuxOSYfYOc="), new NameValuePair("ScriptManager1", "upTopBtn|btnOnlyTradeName"), new NameValuePair("btnOnlyTradeName","字号查重"), new NameValuePair("txtCheckCode",code), new NameValuePair("txtTradeName", URLDecoder.decode(key,"UTF-8")), }; postMethod1.setRequestHeader("cookie",cookie); postMethod1.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8"); postMethod1.setRequestBody(data2); httpClient.getParams().setCookiePolicy(org.apache.commons.httpclient.cookie.CookiePolicy.BROWSER_COMPATIBILITY); httpClient.executeMethod(postMethod1); getData = new String(postMethod1.getResponseBody(),"UTF-8"); System.out.println(getData); //解析html if(getData.indexOf(URLDecoder.decode(key,"UTF-8"))<=0){ System.out.println("-------没有找到字号为:" + key +"的记录!"); result = false; }else{ String regex = "(<.+?>|</.+?>| )+"; Pattern p = Pattern.compile(regex); String[] array = p.split(getData); String res=""; for (String s : array) { if ("".equals(s)) { continue; } res += s +","; } String res_Ary[] = res.split(","); for(String r:res_Ary){ if(r.indexOf(URLDecoder.decode(key,"UTF-8")) > 0){ System.out.println("您搜索的结果为:" +r); break; } } result = true; } }catch (Exception e) { result = false; log.error("---------------------->>>key" + e + "-----------------------error"); } return result; } public static String savegif(GetMethod getMethod) throws IOException { /*String projectPath = HttpClientMail.class.getResource("").toString().replace("%20", " ").substring(6); projectPath = projectPath.split("/WEB-INF/classes/")[0]; String excelPath = projectPath + "/file/2008sohu.gif";*/ String excelPath = "c:/code.jpg"; File storeFile = new File(excelPath); FileOutputStream output = new FileOutputStream(storeFile); //得到网络资源的字节数组,并写入文件 output.write(getMethod.getResponseBody()); output.close(); JFrame frame= new JFrame(); frame.setVisible(false); frame.setBounds(100, 100, 100, 100); frame.setLayout(new FlowLayout()); ImageIcon icon = new ImageIcon(excelPath); frame.add(new JLabel(icon)); frame.setVisible(true); /** * 在控制台输入验证码 */ System.out.println("-------->>>>>请输入你看到的验证码:"); Scanner scr = new Scanner(System.in); String ValidCode = scr.nextLine(); return ValidCode; } public static String GetRegex(String str, String rexString){ // 生成 Pattern 对象并且编译一个简单的正则表达式"Kelvin" Pattern p = Pattern.compile(rexString); // 用 Pattern 类的 matcher() 方法生成一个 Matcher 对象 Matcher m = p.matcher(str); String result = ""; if(m.find()){ result = m.group(); } return result; } public static void main(String[] args) { try { System.out.println("------------>>>>>请输入关键字:"); Scanner scr = new Scanner(System.in); String key = scr.nextLine(); query("",URLEncoder.encode(key, "UTF-8")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
发表评论
-
将博客搬至CSDN
2015-05-07 18:07 581将博客搬至CSDN,地址为:http://tanyongbin ... -
解决java中两个double类型的值相加
2014-07-26 09:59 1852每周六都急急忙忙赶过来加班,今天早上一同事问我两个double ... -
Clob转换成String类型
2014-06-24 15:53 1604最近查询用到一些函数但是查询出来是SerializableCl ... -
MyEclipse6.5的反编译插件
2014-04-23 16:45 779MyEclipse6.5的反编译插件的安装 我的MyEcli ... -
出现数组越界解决办法
2014-03-30 13:49 1459int num = 0; for(i ... -
Digester解析xml文件
2014-03-25 22:23 626http://blog.csdn.net/caihaijian ... -
Java中List转换为数组,数组转List
2014-03-23 10:53 1825ArrayList<String> list=ne ... -
json转换成list<T>
2014-01-15 16:10 4387json值: String jsonString = ... -
java中session对象及其常用方法
2013-12-27 10:13 10462session对象用于在会话范围内,记录每个客户端的访问状 ... -
全文检索Lucene视频
2013-12-25 12:06 623http://www.iteye.com/topic/1132 ... -
Java Math的 floor,round和ceil的总结
2013-10-23 14:20 788floor 返回不大于的最大整数 round 则是4舍5入的 ... -
修改Hosts文件
2013-09-26 16:41 815修改Hosts文件 C:\WINDOWS\system32\d ... -
模拟表单发送POST,GET请求获取数据
2013-09-09 14:07 1048public static String httpRequ ... -
java遍历Map的两种方法
2013-09-02 11:41 900public static void main(Stri ... -
StringEscapeUtils类的使用
2013-08-27 11:30 1006public static void main(Strin ... -
MD5加密算法
2013-08-16 09:32 806/** * md5加密 * @param so ... -
java 多个if 和多个else if 的区别
2013-07-31 11:33 28680int a=1; if(a==1){System.out ... -
java反射返回对象存在的属性值
2013-07-05 11:35 1212package com.yysoft.util; i ... -
java web定时器Timer
2012-11-06 16:22 1007public class AutoRun implemen ... -
慎用Date的after和before
2012-09-23 16:31 50617Date1.after(Date2),当Date1大于Date ...
相关推荐
"HttpClient绕过验证码直接抓取" HttpClient是一种常用的网络请求库,常用于网络爬虫、自动化测试、数据爬取等领域。今天,我们将讨论如何使用HttpClient绕过验证码直接抓取网站数据。 绕过验证码的原理 验证码是...
httpClient连接https 获得验证码图片示例 需要证书才能连接的那种 /* 本文所用开发工具 jak1.5.0_06 eclipse:ObjectWeb Lomboz lib: commons-codec-1.4.jar commons-logging-1.1.jar httpclient-4.0.3.jar ...
利用-中国网建平台-发送短息验证码,或者短信信息,大多数用户android,ios应用手机注册时发送短信验证码,利用httpclient发送,其他短信平台用法大同小异.详细介绍可以观看各个短信平台的开发文档,写得都很详细!
通过HttpClient实现远程下载,本例子通过java代码实现
使用 HttpClient 绕过登录验证码可以实现免登录访问,但是需要注意 Cookie 的路径、域名和过期时间等信息,并选择合适的 Cookie 策略。同时,我们也需要注意.blackhat 的攻击,以保护用户的登录信息。
### 使用HttpClient类实现查询申通快递功能的知识点详解 #### 一、背景介绍 随着电子商务的迅速发展,物流服务已成为日常生活中不可或缺的一部分。对于企业和个人用户来说,能够实时查询包裹的状态变得尤为重要。...
### HttpClient 实现文件下载 #### 一、简介与原理 在Java开发中,经常会遇到需要通过HTTP协议来获取网络资源的需求,例如从Web服务器下载文件。Apache HttpClient 是一个用于发送HTTP请求的Java类库,它提供了...
在Java中使用HttpClient模拟POST请求或者GET请求,使用的是信易通的短信平台接口,一般的情况下都是POST请求(post请求安全,可靠,信息不会在地址栏显示出来),然后(看短信平台要求,),调用短信平台提供的接口...
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
本篇文章将详细介绍如何使用HttpClient实现WebService客户端。 首先,我们需要了解WebService的基本概念。WebService是一种基于标准的、平台无关的、可以跨网络传输数据的方式。它使用SOAP(Simple Object Access ...
本文将深入探讨HttpClient如何实现这些功能。 ### POST请求 POST请求通常用于向服务器提交数据,如表单数据或者JSON对象。使用HttpClient发送POST请求的基本步骤如下: 1. **创建HttpClient对象**:首先,我们需要...
本教程将详细介绍如何利用HttpClient实现文件的上传与下载,并且实时监控进度,以便在UI上显示进度条。 首先,理解HttpClient的基本用法是至关重要的。HttpClient是Apache的一个组件,它提供了丰富的API来构建网络...
从提供的文件名称列表"HttpClient实现文件的上传-lib"来看,这可能包含了所需的jar文件或者对应的Maven/Gradle依赖配置。 7. **最佳实践**:为了保持代码的整洁和可维护性,通常建议使用try-with-resources语句来...
本篇文章将详细介绍如何使用Java的HttpClient实现异步请求资源。 首先,让我们了解什么是异步请求。在同步请求中,调用一个API或发送一个HTTP请求后,程序会等待响应返回,然后继续执行后续代码。而异步请求则不同...
`Httpclient` 是一个强大的工具,可以实现跨项目间的数据通信。本文将深入探讨如何使用 `Httpclient` 进行HTTP请求,实现不同项目之间的数据交换。 `Httpclient` 是Apache HttpClient库,它为Java开发者提供了全面...
在这个场景中,我们看到一个与查询股票信息相关的项目,利用了HTTPClient来获取数据。让我们深入探讨一下这个话题。 首先,`HTTPClient`是Apache HttpClient项目的一部分,提供了一个强大的API来实现HTTP协议的各种...
在这个“实现短信验证码需要用到的jar包.rar”压缩包中,包含了三个重要的Java库:`commons-codec-1.4.jar`、`commons-httpclient-3.1.jar`和`commons-logging-1.1.1.jar`。这些库是实现短信验证码发送和接收的关键...
通过熟练掌握HttpClient的使用,后台程序员可以更高效地实现与远程服务器的通信,特别是处理JSON数据的场景。 总的来说,"HTTPclient.jar"包含了实现HTTP请求和响应处理所需的所有类和接口。结合JSON解析库,后台...