`
xiangxingchina
  • 浏览: 523538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HttpClient 模拟火狐

 
阅读更多
HttpClient是HttpComponents(简称为hc)项目其中的一部份,访问地址:http://hc.apache.org/



HttpClient是一个代码级的Http客户端工具,可以使用它模拟浏览器向Http服务器发送请求。使用HttpClient还需要HttpCore.后者包括Http请求与Http响应的代码封装。



Hello World
Java代码  收藏代码

    public final static void main(String[] args) throws Exception { 
        HttpClient httpclient = new DefaultHttpClient(); 
        try { 
            HttpGet httpget = new HttpGet("http://www.apache.org/"); 
            System.out.println("executing request " + httpget.getURI()); 
            HttpResponse response = httpclient.execute(httpget); 
            HttpEntity entity = response.getEntity(); 
     
            System.out.println("----------------------------------------"); 
            System.out.println(response.getStatusLine()); 
            if (entity != null) { 
                System.out.println("Response content length: " + entity.getContentLength()); 
            } 
            System.out.println("----------------------------------------"); 
     
            InputStream inSm = entity.getContent(); 
            Scanner inScn = new Scanner(inSm); 
            while (inScn.hasNextLine()) { 
                System.out.println(inScn.nextLine()); 
            } 
            // Do not feel like reading the response body 
            // Call abort on the request object 
            httpget.abort(); 
        } finally { 
            // When HttpClient instance is no longer needed, 
            // shut down the connection manager to ensure 
            // immediate deallocation of all system resources 
            httpclient.getConnectionManager().shutdown(); 
        } 
    } 



[点击查看原始大小图片]

使用HC模拟Firefox的请求

1:分析请求包中这六个头信息



2:代码
Java代码  收藏代码

    /**
     * @param args
     * @throws IOException
     */ 
    public static void main(String[] args) { 
        HttpClient httpClient = new DefaultHttpClient(); 
        try { 
            HttpGet httpget = new HttpGet("http://www.iteye.com"); 
     
            httpget.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
            httpget.setHeader("Accept-Language", "zh-cn,zh;q=0.5"); 
            httpget.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1)"); 
            httpget.setHeader("Accept-Encoding", "gzip, deflate"); 
            httpget.setHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7"); 
            httpget.setHeader("Host", "www.iteye.com"); 
            httpget.setHeader("Connection", "Keep-Alive"); 
     
            HttpResponse response = httpClient.execute(httpget); 
            HttpEntity entity = response.getEntity(); 
     
            System.out.println("----------------------------------------"); 
            System.out.println(response.getStatusLine()); 
            if (entity != null) { 
                System.out.println("Response content length: " + entity.getContentLength()); 
            } 
            System.out.println("----------------------------------------"); 
     
            InputStream inSm = entity.getContent(); 
            Scanner inScn = new Scanner(inSm); 
            while (inScn.hasNextLine()) { 
                System.out.println(inScn.nextLine()); 
            } 
            // Do not feel like reading the response body 
            // Call abort on the request object 
            httpget.abort(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            // When HttpClient instance is no longer needed, 
            // shut down the connection manager to ensure 
            // immediate deallocation of all system resources 
            httpClient.getConnectionManager().shutdown(); 
        } 
    } 


3:效果

[点击查看原始大小图片]
分享到:
评论

相关推荐

    JAVA爬虫实现自动登录淘宝

    在本例中,我们使用了Firefox浏览器来模拟用户的行为。 首先,我们需要设置Firefox浏览器的驱动程序,这是因为Selenium需要使用驱动程序来控制浏览器。在本例中,我们使用了geckodriver驱动程序。 接下来,我们...

    httpclient绕过验证码直接抓取

    rv:26.0) Gecko/20100101 Firefox/26.0"); get.addHeader("Host", "www.dajie.com"); get.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); get.addHeader("Accept-...

    HttpClient:php使用socket模拟post、get操作,支持http、socket4、5代理

    rv:13.0) Gecko/20100101 Firefox/13.0.1' ); $ http -> get ( 'http://www.example.com/' ); echo $ http -> get_body (); POST请求 $ http = new HttpClient (); $ http -> set_header ( 'User-Agent' , 'Mozilla...

    htmlunit用到的jar包

    7. **兼容性**:HTMLUnit模仿了Firefox浏览器的行为,因此大多数在Firefox上工作良好的网页也将在HTMLUnit中正常工作。 在使用HTMLUnit时,开发者需要注意以下几点: - **依赖管理**:HTMLUnit依赖于其他库,如 ...

    网络爬虫JAVA

    在实际开发中,你可能还会遇到一些挑战,如动态加载内容(使用如Selenium或Puppeteer库解决)、JavaScript渲染(借助Headless Chrome或Firefox)以及处理JSON或XML数据。Java的Jackson或Gson库可用于解析JSON,而...

    vs下控制网页元素实例

    Selenium支持多种编程语言,包括C#,并且能与各大主流浏览器如Chrome、Firefox、IE等配合使用。 其次,**HtmlAgilityPack** 是一个用于处理HTML文档的.NET库,它提供了强大的HTML解析和修改能力。如果实例中需要...

    基于C#的网络爬虫程序设计.zip

    Selenium支持多种浏览器,如Chrome、Firefox等,通过WebDriver接口与它们交互。 此外,为了避免频繁请求同一网站导致IP被封,我们需要实现延时策略和代理IP池。延时策略可以通过Task.Delay实现,而获取和管理代理IP...

    selenium-2.48.2

    6. 集成开发环境 (IDE):Selenium 提供了一个集成开发环境,Selenium IDE,这是一个Firefox插件,允许用户通过录制和回放功能快速创建测试脚本。 7. 测试框架集成:Selenium 可以与JUnit 和 TestNG 等测试框架无缝...

    基于C#.NET+PhantomJS+Sellenium的高级网络爬虫系统设计与实现

    Selenium支持多种浏览器,包括Chrome、Firefox等,可以提供更灵活的选择。在C#.NET中,可以使用Selenium WebDriver接口与PhantomJS配合,进一步提升爬虫的交互能力和适应性。通过Selenium,可以模拟用户的各种操作,...

    C#编写的网络爬虫软件

    2. **动态加载内容处理**: 对于使用Ajax技术加载的内容,可以借助Selenium WebDriver模拟浏览器行为,或者使用Headless Chrome/Firefox抓取。 3. **反爬虫策略**: 了解常见的反爬虫手段,如User-Agent欺骗、滑动...

    QQ机器人c#源代码

    它支持不同浏览器的实现差异(如IE和Firefox)。 2. **发送请求**: `Request`方法用于发送HTTP请求。它支持GET和POST两种方法,并允许指定回调函数来处理响应。 3. **响应处理**: `Response`方法用于处理服务器...

    百度贴吧java爬虫

    可以使用Selenium、Headless Chrome/Firefox等工具模拟浏览器执行JavaScript。 7. **反爬虫策略**:百度贴吧可能会有反爬虫机制,如验证码、IP限制、User-Agent检测等,爬虫开发者需要研究并采取相应的应对措施,如...

    selenium-java-2.28.0

    4. **Selenium IDE**:这是一个Firefox插件,可以录制和回放测试用例,方便快速创建测试脚本。 5. **JAR 文件**:包含所有必要的类库,如`client-combined.jar`,它是运行Selenium测试所必需的,包含了WebDriver和...

    C#网络抓取文字

    安装Selenium WebDriver时,需要根据实际使用的浏览器(如Chrome或Firefox)选择对应的驱动程序。 ```csharp Install-Package Selenium.WebDriver Install-Package Selenium.WebDriver.ChromeDriver ``` 下面是...

    java编写的爬虫demo

    这时,可能需要使用支持JavaScript执行的库如Selenium或Headless Chrome/Firefox来获取完整页面内容。 在Java编写的爬虫Demo中,开发者通常会展示如何初始化网络连接、发送请求、解析响应、提取数据以及存储数据的...

    selenium的jar包

    WebDriver支持多种浏览器,包括Chrome、Firefox、Edge和IE等。 2. Selenium Server:这是一个独立的服务,主要用于处理WebDriver与浏览器之间的通信。尤其是当使用远程WebDriver或需要使用不同的浏览器版本时,...

    软件测试技术实验报告——黑盒测试.doc

    Selenium IDE是一款基于Firefox的插件,用于录制、编辑和回放Web应用的测试脚本。在JForum的注册页面,我们可以录制用户的操作,如输入用户名、密码等,然后回放这些操作以检查注册功能的正确性。Selenium IDE提供...

    零基础写Java知乎爬虫之准备工作

    使用开发者工具(如Chrome的开发者工具或Firefox的Web Console)观察网络请求,找到加载内容的API,然后在Java中复现这些请求。 海量抓取知乎内容时,我们需要考虑数据的组织结构。一种常见的方法是使用树状结构,...

    selenium2.53 jar包

    在这个版本中,Selenium 提供了对多种浏览器的支持,包括Chrome、Firefox、Internet Explorer等,并且兼容多种编程语言,如Java、Python、C#等。 1. **Selenium WebDriver**: Selenium 2.53 引入了WebDriver API,...

Global site tag (gtag.js) - Google Analytics