有强大的cURL,忘掉httpclient的吧!
这段时间想做一个网页采集的程序,由于一网站采用了防采集的办法,我的httpclient总是在登录后无法获取到我想要过去的链接。在无数次的跟踪过后发现原来人家给返回的是javascript拼成的页面,而且其中包含了frameset,期间嵌套好多frame。由于httpclient的getResonseBody仅仅只能得到服务器端而不能将它进一步做解析和执行。期间到时尝试想进一步将返回的js代码模拟浏览器执行,但是,突然想起php的cURL 模块很是强大,它就可以直接拿回来。所以就想是否尝试cURL是否会很简单哪?
安装cURL
- yum install curl curl-devle
下载libcurl的java绑定
http://curl.haxx.se/libcurl/java/
配置和编译java-libcurl
- gunzip curl-java-0.2.2.tar.gz
- tar xvf curl-java-0.2.2.tar
- cd curl-java-0.2.2
- make
注意,在linux下会生成相应的javacurl库文件以及一些需要用到的java类源文件。不过注意在编译的时候把MakeFile中的路径都配置到你安装的目录中哦。
windows下要编译成dll文件。在eclipse环境中要将dll文件放在WINDOWS/system32或者按照你的目录标准重写头文件,然后执行编译。否则会给出java.lang.UnsatisfiedLinkError的错误。
有关该错误,可见偶们强大的JEr的讨论,帖子在:
http://www.iteye.com/topic/58461?page=2
因为,在libcurl-java中的源文件中有
- try {
- // Loading up the shared JNI
- System.loadLibrary("javacurl");
- } catch (Exception e) {
- e.printStackTrace();
- }
相关windows环境下已经编译好的包下载地址在:
http://www.gknw.de/mirror/curl/curl_java/
然后,执行curl-java-0.2.2包中的test.java文件(可以将里面的url,改成你想登入的顽固网站)
你是否看见你它贴心的给你返回你想要的东西了呢?
如果用ruby,python或者perl的话,也是只需安装他们的libcurl绑定模块即可,然后在你的世界畅游吧。
http://lovejuan1314.iteye.com/blog/290461
有强大的cURL,忘掉httpclient的吧!的更多相关文章
- 功能强大的CURL
linux下的curl,有着非同一般的魔力,有人称它为下载工具,我更倾向于叫它“文件传输工具”因为它好像无所不能.从常见的 FTP, HTTP, TELNET, 等协议,还支持代理服务器,cook ...
- php curl
这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感, 本文我来给大家详细介绍下cUR ...
- CURL详解(转载)
curl_setop()函数中的参数中文说明 curl_setop()函数中的参数中文说明 curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,value是这个 ...
- HttpClient 教程 (A)
前言 超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了.Web服务,有网络功能的设备和网络计算的发展,都持续扩展了HTTP协议的角色,超越了用户使用的Web浏览器范畴,同时,也增加了需 ...
- php中curl模拟浏览器来传输数据
cURL可以使用URL的语法模拟浏览器来传输数据, 因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以 ...
- cURL和HTTPie
http://lingxiankong.github.io/blog/2014/08/19/curl-httpie/ 前两天在网上看到一个号称比cURL更牛逼的命令行工具HTTPie,提供命令行交互方 ...
- php中的curl】php中curl的详细解说
本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GO ...
- php中curl的详细解说(转载)
本文转自:http://blog.csdn.net/yanhui_wei/article/details/21530811 这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_c ...
- httpclient介绍
前言 超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了.Web服务,有网络功能的设备和网络计算的发展,都持续扩展了HTTP协议的角色,超越了用户使用的Web浏览器范畴,同时,也增加了需 ...
随机推荐
- html5 canvas 圆形径向渐变
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 第12月第1天 MASConstraintMaker crash
1. crash [valueLabel mas_makeConstraints:^(PAKitMASConstraintMaker *make) { make.left.equalTo(finish ...
- KNN实现手写数字识别
KNN实现手写数字识别 博客上显示这个没有Jupyter的好看,想看Jupyter Notebook的请戳KNN实现手写数字识别.ipynb 1 - 导入模块 import numpy as np i ...
- IIS部署常见问题总结
1.通过网站子目录访问后台管理 场景:前台和后台分为两个项目开发,域名只有一个(t.cn),作为前台的地址,后台的地址希望指定为 t.cn/admin 项目部署的时候,需要把后台项目转化为/admin ...
- 011_自定义mac通知的时长
打开终端(找不到的点击 Mac 屏幕右上角放大镜按钮,Spotlight 搜索 “终端”),粘入下面这行命令,回车就行了.注意最后的 # 替换成你希望通知中心横幅停留的秒数,比如 15.default ...
- centos7 部署 docker、shipyard
=============================================== 2019/4/9_第3次修改 ccb_warlock 更新说 ...
- Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String异常处理
问题原因:Mybatis中对于时间参数进行比较时的一个BUG. 如果拿传入的时间类型参数与空字符串‘‘进行对比判断则会引发异常.,所以应该去掉该判断, 只保留非空判断就正常了 <if test= ...
- list的几种new方式比较ImmutableList
数组的非空判断: -----数组的非空判断----- StringUtils.isNotBlank(array); list的非空判断: -----list的非空判断----- CollectionU ...
- laravel队列,事件简单使用方法
A.队列的使用 1.队列配置文件存储在 config/queue.php 根据自己的情况进行配置 2..env文件 QUEUE_DRIVER=database(根据个人情况配置,redis等) 3.创 ...
- ***文件上传控件bootstrap-fileinput的使用和参数配置说明
特别注意: 引入所需文件后页面刷新查看样式奇怪,浏览器提示错误等,可能是因为js.css文件的引用顺序问题,zh.js需要在fileinput.js后面引入.bootstrap最好在filein ...