httpclient模拟浏览器訪问站点
HttpClient 是 Apache Jakarta Common 下的子项目。能够用来提供高效的、最新的、功能丰富的支持 HTTP 协议的client编程工具包。而且它支持 HTTP 协议最新的版本号和建议。本文首先介绍 HTTPClient。然后依据作者实际工作经验给出了一些常见问题的解决方法。
下面列出的是 HttpClient 提供的基本的功能,要知道很多其它具体的功能能够參见 HttpClient 的主页。
(1)实现了全部 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自己主动转向
(3)支持 HTTPS 协议
(4)支持代理server等
该篇主要是讲怎样模拟主流浏览器进行訪问。httpclient更新到4.0以上版本号时有了非常多改变。方法和类都变了,基本上等于重做的项目。我这里仅仅针对4.0以上版本号。
首先我先讲讲为什么要模拟浏览器,假设不模拟浏览器则HttpPost和HttpGet中的headers为空,不像其它浏览器那么有headers如图(谷歌浏览器在訪问百度时的header):
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE1MjUwOTkzMDI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
所以在一些后台比較严格的站点时(检查headers)会返回502或者验证不通过等情况。所以不能达到我们想要的结果。
模拟浏览器主要就是模拟主流浏览器的headers。但保险起见的话先用谷歌浏览器开隐身窗体进入调试模式再訪问你想訪问的站点,把相应的浏览器header取过来设置到相应的HttpGet和HttpPost的headers里就能够了。
比如我訪问csdn博客就是用以下的设置方式:
post.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
post.setHeader("Accept-Encoding","gzip,deflate,sdch");
post.setHeader("Accept-Language","zh-CN,zh;q=0.8");
post.setHeader("Connection","keep-alive");
post.setHeader("Host", "blog.csdn.net");
post.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
全然从谷歌浏览器上面抄过来的。模拟浏览器訪问就不会出现502。
httpclient模拟浏览器訪问站点的更多相关文章
- 您可能试图从server上的安全浏览器訪问此站点。请启用脚本然后又一次载入此页。
您可能试图从server上的安全浏览器訪问此站点.请启用脚本然后又一次载入此页. 我使用域Admin组的账户登入SharePoint2010的server,打开SharePoint首页 ...
- httpclient模拟浏览器get\post
一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等.所访问的这些页面有的仅 仅是一些普通的页面,有的需要用户登录后方可使用,或者需 ...
- httpClient模拟浏览器发请求
一.介绍 httpClient是Apache公司的一个子项目, 用来提高高效的.最新的.功能丰富的支持http协议的客户端编程工具包.完成可以模拟浏览器发起请求行为. 二.简单使用例子 : 模拟浏览器 ...
- Java语言使用HttpClient模拟浏览器登录
使用HttpClient来模拟浏览器登录网站,然后可以进行操作,比如发布信息等 第一步:获取实际的post网址,(不考虑复杂情况下) 1.需要使用到firefox的httpfox插件,httpfox中 ...
- httpclient模拟浏览器
package com.java.httpclient; import java.io.IOException; import org.apache.http.HttpEntity; import o ...
- 关于HttpClient模拟浏览器请求的參数乱码问题解决方式
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...
- JAVA--利用HttpClient模拟浏览器登陆请求获取响应的Cookie
在通过java采集网页数据时,我们常常会遇到这样的问题: 站点需要登陆才能访问 而这种网站,一般都会对请求进行账号密码的验证,验证的方式也有多种,需要具体分析. 今天分析其中的一种情况: 站点对登陆密 ...
- httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息
转自:http://resolute.javaeye.com/blog/491701 commons-httpclient是apache下的一个开源项目,提供了一个纯java实现的http客户端.使用 ...
- 20200726_java爬虫_使用HttpClient模拟浏览器发送请求
浏览器获取数据: 打开浏览器 ==> 输入网址 ==> 回车查询 ==> 返回结果 ==> 浏览器显示结果数据 HttpClient获取数据: 创建HttpClient ==& ...
随机推荐
- 基于邻接表的广度优先搜索遍历(bfs)
题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 #include<stdio.h> #incl ...
- jquery UI Draggable和Droppable 案例
<html> <head><title>draggable</title> <script type="text/javascript& ...
- [swustoj 1097] 2014
2014(1097) 问题描述 今年是2014年,所以小明喜欢2014的每一位数字(即:2,0,1,4),小明想知道在区间[l,r](包括l和r)中有多少个数中含有这4个数字(数字无前缀零). 输入 ...
- c# equals与==的区别
对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false.对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true.对于 string ...
- ZBreak
https://github.com/atskyline/ZBreak 最近用电脑用的多,总觉得有必要2个小时休息一会.就花了一点点时间写了这个小东西如果连续使用电脑超过2个小时会弹出一个窗口提示. ...
- 【转】特斯拉CEO马斯克:关于创业的几件重要事情
特斯拉电动汽车联合创始人兼CEO,私人太空发射公司SpaceX CEO伊隆马斯克(Elon Musk)于5月16日在南加大商学院毕业典礼上发表演讲,他谈到了关于创业的几件重要的事情:一是努力工作;二是 ...
- WebDriver打开浏览器-java
环境:配置jdk.使用Eclipse(个人爱好),导入selenium-java-2.42.2.jar.selenium-java-2.42.2-srcs.jar.selenium-server-st ...
- Python Paste.deploy 笔记
首先python paste是一个WSGI工具包,在WSGI的基础上包装了几层,让应用管理和实现变得方便.说实话,Python Paste的文档做的真差劲!加之python代码可读性本来就不怎么滴,真 ...
- 进程隐藏与进程保护(SSDT Hook 实现)(二)
文章目录: 1. 引子 – Demo 实现效果: 2. 进程隐藏与进程保护概念: 3. SSDT Hook 框架搭建: 4. Ring0 实现进程隐藏: 5. Ri ...
- Linq to Sql 总生成 where ID is null 的解决办法
using (Entities com = new Entities()){ com.Configuration.UseDatabaseNullSemantics = true; } EF+M ...