- 浏览: 240805 次
- 性别:
- 来自: 深圳
最新评论
-
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 550将博客搬至CSDN,地址为:http://tanyongbin ... -
解决java中两个double类型的值相加
2014-07-26 09:59 1818每周六都急急忙忙赶过来加班,今天早上一同事问我两个double ... -
Clob转换成String类型
2014-06-24 15:53 1538最近查询用到一些函数但是查询出来是SerializableCl ... -
MyEclipse6.5的反编译插件
2014-04-23 16:45 736MyEclipse6.5的反编译插件的安装 我的MyEcli ... -
出现数组越界解决办法
2014-03-30 13:49 1420int num = 0; for(i ... -
Digester解析xml文件
2014-03-25 22:23 593http://blog.csdn.net/caihaijian ... -
Java中List转换为数组,数组转List
2014-03-23 10:53 1779ArrayList<String> list=ne ... -
json转换成list<T>
2014-01-15 16:10 4342json值: String jsonString = ... -
java中session对象及其常用方法
2013-12-27 10:13 10434session对象用于在会话范围内,记录每个客户端的访问状 ... -
全文检索Lucene视频
2013-12-25 12:06 603http://www.iteye.com/topic/1132 ... -
Java Math的 floor,round和ceil的总结
2013-10-23 14:20 752floor 返回不大于的最大整数 round 则是4舍5入的 ... -
修改Hosts文件
2013-09-26 16:41 787修改Hosts文件 C:\WINDOWS\system32\d ... -
模拟表单发送POST,GET请求获取数据
2013-09-09 14:07 1016public static String httpRequ ... -
java遍历Map的两种方法
2013-09-02 11:41 863public static void main(Stri ... -
StringEscapeUtils类的使用
2013-08-27 11:30 935public static void main(Strin ... -
MD5加密算法
2013-08-16 09:32 770/** * md5加密 * @param so ... -
java 多个if 和多个else if 的区别
2013-07-31 11:33 28638int a=1; if(a==1){System.out ... -
java反射返回对象存在的属性值
2013-07-05 11:35 1172package com.yysoft.util; i ... -
java web定时器Timer
2012-11-06 16:22 968public class AutoRun implemen ... -
慎用Date的after和before
2012-09-23 16:31 50544Date1.after(Date2),当Date1大于Date ...
相关推荐
httpclient绕过验证码直接抓取,you know
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 绕过登录验证码可以实现免登录访问,但是需要注意 Cookie 的路径、域名和过期时间等信息,并选择合适的 Cookie 策略。同时,我们也需要注意.blackhat 的攻击,以保护用户的登录信息。
HttpClient实现POST GET和文件下载 HttpClient实现POST GET和文件下载
通过HttpClient实现远程下载,本例子通过java代码实现
在Java中使用HttpClient模拟POST请求或者GET请求,使用的是信易通的短信平台接口,一般的情况下都是POST请求(post请求安全,可靠,信息不会在地址栏显示出来),然后(看短信平台要求,),调用短信平台提供的接口...
用HttpClient实现文件下载需要满足:有一台web服务器,要下载的源文件需存放在web服务器的特定目录下。通过发起http请求实现文件下载功能。
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
Android使用HttpClient实现上传下载功能并监控进度
java中跨项目使用httpclient实现数据交换
使用HttpClient实现文件的上传所需lib
NULL 博文链接:https://zywang.iteye.com/blog/916489
用HttpClient类实现查询申通快递的功能。示例请见http://www.ickd.cn/shentong.html
主要介绍了java实现HttpClient异步请求资源的方法,实例分析了java基于http协议实现异步请求的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+...
HTTP异步工具包(HttpClient实现) http://blog.csdn.net/lyl_studio/article/details/9319549
利用c# httpclient ,post json数据到web api