`

模拟浏览器访问增加页面浏览数量

阅读更多

因为刚开始开博客并没有什么浏览量,所以心中一时想着怎么变成增加自己的浏览量,于是参考了网上的例子写了个程序,主要是用java访问指定的网页,当然只是一时兴起,没有恶意。

我开始只是采用简单的URL访问页面,但是一般网站会对这种纯爬虫或者类爬虫程序拒绝,我就是一开始被拒绝了,并被网站警告 ,因此,需要模拟浏览器访问才行,浏览器访问使用的HTTP协议,可以在程序中加入这个请求报头,至于报头内容,谷歌浏览器按F12后有个network选项,里面可以看到

 

说多了无用,直接上程序

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class visitWebsite {
    /**
     * 向指定URL发送GET方法的请求
     * 
     * @param url
     *            发送请求的URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return URL 所代表远程资源的响应结果
     */
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        String urlNameString;
        try {
            if(!param.equals("")){
            	urlNameString = url + "?" + param;
            }else{
            	urlNameString=url;
            }
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性,浏览器请求报头,不然会被有的网站检测到恶性爬网页而被禁止访问
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 向指定 URL 发送POST方法的请求
     * 
     * @param url
     *            发送请求的 URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }    
    
    
    public static void main(String[]args) throws InterruptedException{
    	
    	int i=0;
    	while(i<1000){
    		visitWebsite.sendGet("http://the page you are going to visit", "");
    		/*
    		 * 一般网站如果检测到某个iP短时间内过频繁访问也会拒绝,因此这里设置每30秒请求一次
    		 * 
    		 * */
    		Thread.sleep(30*1000);
    		i++;
    	}
    }
}

 

值得说明的是,即使这样,可以在一段时间内增加网站的访问量,但是我测试的网站还是会因为同一个IP在一段时间内过于频繁访问而被要求输入验证码,不然IP会被禁止访问,在输入验证码后会解禁IP,听说可以使用动态路由访问,这方面我不太熟,所以不做解释。

分享到:
评论

相关推荐

    多页面IE浏览用户控件VB源码

    总之,"多页面IE浏览用户控件VB源码"是一个用于VB应用程序的自定义组件,通过集成WebBrowser控件实现了多页面浏览功能,便于开发者在他们的项目中实现类似浏览器的多标签页功能。通过深入理解WebBrowser控件的工作...

    在线购物浏览访问记录 asp

    1. **访问统计**:ASP可以记录用户的浏览行为,如访问页面、停留时间等,这些数据可用于分析用户喜好和优化网站布局。 2. **浏览历史**:通过跟踪用户浏览过的商品,ASP可以帮助实现“最近浏览”功能,推荐用户可能...

    模拟网上商城

    例如,商品信息的展示可能需要用到AJAX异步加载,浏览记录则需要在服务器端存储用户的浏览行为,购物车功能则涉及到商品ID和数量的增删改查,最后提交订单时需要验证用户信息、计算总价并生成订单。 卖家端的管理...

    百度排名模拟公式

    - **PV (Page View)**:页面浏览量,表示用户每次刷新或访问一个网页都被记录为一次PV。PV反映了用户对网站内容的关注程度。 - **IP**:独立IP数,指在一定时间范围内(通常为一天),访问网站的不同IP地址的数量。...

    js虚拟、模拟键盘

    9. **安全性**:在安全敏感的环境中,虚拟键盘可以帮助防止键盘记录器和屏幕抓取攻击,因为它不依赖于物理键盘事件,而是直接在页面上模拟输入。 10. **可访问性**:虚拟键盘应遵循Web无障碍(WCAG)指南,确保残障...

    javascript经典特效---回退的页面数.rar

    1. `window.history.length`属性:这个属性返回浏览器历史记录中的条目数量,包括当前页面。当你点击链接或者进行页面跳转时,这个数字会增加。如果你回退到前一个页面,这个数字不会减少,除非你关闭了浏览器或者...

    网页访问模块.rar

    这时,我们可能需要借助如`Selenium`这样的工具,它可以模拟真实浏览器行为,执行JavaScript代码并获取最终渲染后的页面内容。 除了Python,其他编程语言也有相应的网页访问模块。例如,在Java中,`...

    JS让信息一条一条上浮(浏览器兼容)

    3. **浏览器兼容性处理**:为了确保在不同的浏览器中都能正确显示,我们需要考虑对老版本IE浏览器的支持,可能需要引入jQuery库或者使用polyfill来实现某些不被所有浏览器支持的方法,如`classList`或CSS3动画。...

    Web Application Stress Tool(WAS)使用详解

    1. 记录浏览器活动:WAS可以记录用户在浏览器中的操作,如页面浏览、点击等,然后将这些活动转化为测试脚本。 2. 导入IIS日志:可以从Web服务器的日志文件中导入用户行为数据,生成更接近实际用户行为的脚本。 3. ...

    基于Python的电商购物平台-源代码-文档-毕业设计-课程设计

    启动与访问:在虚拟环境中启动项目后,通过浏览器访问http://127.0.0.1:5000即可进入网站前台首页。 用户注册与登录:首次访问首页时,用户可以从左上角点击“注册”按钮进入注册页面完成注册。注册完成后返回首页,...

    模拟下拉列表框,支持手动输入和方向键

    7. **可访问性和兼容性**:在开发过程中,应考虑不同浏览器和设备的兼容性,确保模拟下拉列表在各种环境下都能正常工作。同时,遵循WCAG(Web Content Accessibility Guidelines)标准,保证残障人士也能无障碍地...

    JSP简易购物车 源码 session储存对象

    部署完成后,启动服务器,用户可以通过浏览器访问指定的项目URL,例如`http://localhost:8080/BookShopping`,即可看到购物车界面并进行操作。 7. **学习价值**: 对于初学者,这个项目可以帮助理解JSP和session在...

    alpha综合总结1

    软件在多个平台和浏览器环境下进行了测试,包括谷歌浏览器、IE浏览器、360浏览器、搜狗浏览器和火狐浏览器,确保了跨平台兼容性。每个功能点如登录验证、申请开课、查看课程、选课、查看个人课表、讨论区交互等都...

    郭枫《专业垂直互联网站分享,我们如何做WEB页面优化?》

    2. **用户访问量**:包括PV(页面浏览量)、IP(独立访客数)等指标,用于评估网站流量。 3. **用户黏度**:通过导出率、跳出率、PV/IP比率等指标来衡量用户的活跃度和参与度。 #### 四、优化案例分析 - **频道...

    Microsoft Web Application Stress Tool服务器压力测试使用说明

    脚本的制作应该尽可能地模拟真实用户的行为,包括不同的页面访问模式和流量分布。 WAS允许创建页面组来表示不同的用户行为模式,比如浏览和购买。在脚本中,你可以设定各页面组的流量比例,如30比1的浏览与购买比例...

    京东_淘宝的自动浏览逛店脚本.zip

    7. **控制流程**:如使用条件判断、循环结构来控制脚本的行为,比如遍历店铺列表、浏览一定数量的商品等。 8. **异常处理**:为确保脚本的稳定运行,可能包含了异常处理代码,以应对网络延迟、页面加载失败等情况。...

    WAS Web Application Stress Tool(WAS,Web应用负载测试工具)

    例如,在一个模拟书店场景的测试中,可以创建名为`grp_browse`(浏览组)和`grp_buy`(购买组)的页面组,然后设置30:1的流量比例,意味着大部分用户在浏览书籍,少量用户进行购买操作。在主脚本视图中,每个请求会...

    Dreamweaver模拟试题,每天都有部分更新..pdf

    3. Java Applet:Java Applet是一种可以在网页中运行的小程序,能够增加动态效果,但不是所有浏览器都支持,且其兼容性和扩展性可能有限,需要特定插件才能运行,因此C选项的描述是错误的。 4. 模板文件扩展名:...

    WAS服务器负载测试软件导读[整理].pdf

    例如,在一个假设的书店网站中,可以创建两个页面组,一个用于浏览(grp_browse),另一个用于购买(grp_buy),并设定相应的流量比例。然后,在主脚本视图中,将各个请求分配到相应的页面组,以控制流量的流向。...

Global site tag (gtag.js) - Google Analytics