zoukankan      html  css  js  c++  java
  • 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):

    所以在一些后台比較严格的站点时(检查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。

  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5355944.html
Copyright © 2011-2022 走看看