Fork me on GitHub

利用Java+DOS批处理实现网站刷流量

     最近最好的朋友开了个小店,木流量更木信誉,死乞白赖的要我想办法给他刷流量,无奈朋友就是被利用的。 在不断向广大亲朋好友推荐的同时,想身为程序猿的我应该要做些什么,于是想到能否编程刷流量,网上一大堆刷流量的软件不敢用,搞不好店就得关门,还是自己解决吧。刷流量需要解决两个题,一是怎样访问算流量;二是怎样获取多个IP来访问,因为大家知道像淘宝这样的大型商城肯定是有各种防刷机制,一个IP肯定刷不了多少,搞不好就被封了,况且一个IP刷只能增加浏览量而不能增加访客数,作用还是不大。

     于是我想到了两个方法:一是用httpclient后台执行get方法打开网页获取数据,代码如下:

package com.alexia;

import java.io.IOException;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class AutoVisitSite {

    public static void main(String[] args) {
        
        // 访问10次
        for(int count = 1; count < 11; count++) {
            AutoVisit(count);
        }
        
    }

    public static void AutoVisit(int count) {
        
        HttpClient httpclient = new HttpClient();

         // 设置HTTP代理IP和端口
//         httpclient.getHostConfiguration().setProxy("58.252.56.149", 8080);
        
         // 代理认证(登录名+密码)
//         UsernamePasswordCredentials creds = new UsernamePasswordCredentials("root", "123456");
        
//         httpclient.getState().setProxyCredentials(AuthScope.ANY, creds);

        // Get调用
        GetMethod method = new GetMethod("http://alexia.taobao.com/");

        method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
                new DefaultHttpMethodRetryHandler(3, false));

        try {
            int statusCode = httpclient.executeMethod(method);

            if (statusCode != HttpStatus.SC_OK) {

                System.out.println(statusCode + ": " + method.getStatusLine());

            } else {

                // System.out.println(new String(method.getResponseBody(),
                // "GBK"));
                System.out.println("访问" + count + "次!");
            }

        } catch (IOException e) {
            
            e.printStackTrace();
            
        } finally {

            // 停留3s后再关闭连接
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            method.releaseConnection();
        }
    }
}

结果当然是不行,要是这么简单,淘宝也可以关门了。通过淘宝的实时客户访问可知,淘宝是记录每一位访客来源的,是直接访问的还是站外访问的(也就是你推广的链接处访问进来),点击站外其他可以看到具体从哪个页面链接访问进来的,如下图所示:

所以此法不通(其实早知道了,只是还是想亲身尝试下以彻底死心)。于是想到了第二种方法:通过自动打开浏览器窗口访问网站,这种方法应该是可行的,就跟你自己手动打开浏览器访问网站效果一样,而打开浏览器针对不同版本的JDK也有不同的方法,如下:

// 在新的浏览器窗口或在已有的浏览器窗口打开指定的URL(JDK 1.6以下)
    public static void openURL1(String url){  
         try {  
          Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+ url);  
         }catch(Exception e){
             e.printStackTrace();
         }  
    } 
    
    // 在新的浏览器窗口或在已有的浏览器窗口打开指定的URL(JDK 1.6以上)
    public static void openURL2(String url){  
        Desktop desktop = Desktop.getDesktop();
        if (Desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE)) {
            URI uri = URI.create("http://lanxuezaipiao.blog.163.com/");
            try {
                desktop.browse(uri);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
   } 

但为了打开浏览器后能及时关闭浏览器以避免产生多个窗口,我选择了利用Java执行DOS批处理的方式,即第一种方式,但上述第一种方式是用默认浏览器打开,而我系统的默认浏览器是Firefox,为了能在刷流量的同时还能继续上网,我决定用IE来执行刷流量的任务,批处理文件(autoVisit.bat)如下:

cd \
C:
cd Program Files\Internet Explorer
iexplore "http://item.taobao.com/item.htm?spm=a1z10.1.w4004-1854795698.36.SVY3Wd&id=18480249494"

然后Java调用这个批处理,代码如下:

package com.alexia;

import java.io.IOException;

/**
 * 自动刷流量
 * 
 * @author Alexia
 *
 */
public class AutoFlux {

    /**
     * 
     * @param count
     *            访问次数
     * @param seconds
     *            每次访问时间
     * @throws InterruptedException 
     */
    public static void flux(int count, int seconds) {
        Process p1 = null, p2 = null;

        while (count-- > 0) {
            try {
                // 执行批处理开始打开IE浏览器访问
                p1 = Runtime.getRuntime().exec("cmd /c autoVisit.bat");
                
                // 访问延时(打开浏览器窗口要时间的)
                try {
                    Thread.sleep(1000 * seconds);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                // 关闭IE浏览器
                p2 = Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe");
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        
            p1.destroy();
            p2.destroy();
        }
    }

    /**
     * @param args
     * @throws InterruptedException 
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        // 访问10次,每次延时5s
        flux(2, 5);
    }

}

你可能会想,没必要这么麻烦把,既然是执行批处理,何必需要Java来调用执行,执行运行.bat文件不就行了嘛,的确如此,因为开始不知道批处理的延时方法,现在知道了,改用批处理方式最简洁:

@echo off
rem 首先找到IE浏览器的执行路径
cd \
C:
cd Program Files\Internet Explorer

rem 循环10次
for /l %%i in (1,1,10) do (
rem 打开网页并最小化窗口(不影响你当前工作)
start /min iexplore "http://item.taobao.com/item.htm?spm=a1z10.1.w4004-

1854795698.36.SVY3Wd&id=18480249494"

rem 延时5s
choice /t 5 /d y /n >nul

rem 关闭网页
taskkill /F /IM iexplore.exe
)

上面的批处理在执行时还是会出现DOS窗口的,还是有点影响不好,所以为了不显示DOS窗口,又写了个VB脚本:

DIM objShell
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("cmd.exe /C autoVisit.bat", 0, TRUE)

这样就好了,完全不影响当前工作,真正实现了刷流量的功能。


但还是有问题没有解决:

1. 打开IE时任务栏有显示图标,你会看到图标一下有一下没,希望能够隐藏任务栏上的IE图标(也就是后台运行吧),经过搜索只能隐藏通知区域的图标而无法隐藏任务栏的某个程序图标;

2. 最关键的问题是如何多IP访问(增加访客量),这个问题我想到用代理服务器,IE可以设置代理服务器,关键是找不到可用的免费代理服务器,下载了个代理猎手ProxyHunter,在里面搜索了很久都搜不到一个免费的不要密码的,全是下面这些结果:



自己在网上也找了很多代理IP,放到猎手里一验证还是上面那些东西,没一个可用的,所以目前还为实现多IP访问网站的功能。


PS:如果谁有办法解决上面的两个问题,一定要告诉我,感激不尽!!!

posted @ 2013-05-21 18:40  Alexia(minmin)  阅读(7139)  评论(25编辑  收藏  举报
无觅关联推荐,快速提升流量