利用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次,每次延时5sflux(2, 5);}}
你可能会想,没必要这么麻烦把,既然是执行批处理,何必需要Java来调用执行,执行运行.bat文件不就行了嘛,的确如此,因为开始不知道批处理的延时方法,现在知道了,改用批处理方式最简洁:
@echo off rem 首先找到IE浏览器的执行路径 cd \ C: cd Program Files\Internet Explorerrem 循环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 >nulrem 关闭网页 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:如果谁有办法解决上面的两个问题,一定要告诉我,感激不尽!!!联系我
利用Java+DOS批处理实现网站刷流量相关推荐
- 利用Java爬取基金网站的基金数据,快速筛选优质热门基金
爬取数据源为天天基金网的页面基金数据 利用java爬取基金数据并简单筛选后的效果图 创建java maven项目,推荐用spring boot maven需要引入的jar包依赖 <!--lomb ...
- 如何利用Java,Javaweb开发网站
需求分析 基于Javaweb整合三大组件(servlet+Filter+listen)设计并实现一个工作室网站开发, 对于工作室的日常宣传,企业形象,简单管理来说, 如何通过计算机技术对工作室进行管理 ...
- java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...
Java调用批处理或可执行文件 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现.下面是一种比 ...
- DOS批处理高级教程:第七章 DOS批处理编程高级技巧(转)
DOS批处理高级教程:第一章 批处理基础 DOS批处理高级教程:第二章 DOS循环for命令详解 DOS批处理高级教程:第三章 for命令中的变量 DOS批处理高级教程:第四章 批处理中的变量 DOS ...
- java动漫网站开题报告_基于java的校园论坛网站的开发与设计开题报告.doc
基于java的校园论坛网站的开发与设计开题报告 太 原 科 技 大 学 华 科 学 院 毕业设计开题报告 学 生 姓 名:学 号:学 院.系:专 业:论 文 题 目:指导教师: 2015 年 3 月1 ...
- Transform数据权限浅析2之利用Java完成权限设置
Transform数据权限浅析2之利用Java完成权限设置 一:项目背景 1.1:cognos的两种建模工具 为了更好的满足客户的需求,提升报表展现的效率,一种建模工具已经不能满足报表开发和展现的需要 ...
- java调用通用对话框,利用Java Swing设计通用对话框
利用Java Swing设计通用对话框 分享到: 文/杨少波 在Java Swing编程中,程序员还可以自定义对话框,一般可以从JDialog类来继承.下面给出一个对话框类的代码: class Hel ...
- java横向导出excel_利用Java进行Excel的数据导入导出
1. 引言 MS 的电子表格(Excel)是Office 的重要成员,是保存统计数据的一种常用格式.在一 个Java 应用中,将一部分数据生成Excel 格式,是与其他系统无缝连接的重要手段.在远程 ...
- DOS批处理高级教程(一) 批处理基础
前言 批处理主要是用于脚本的编写, 是为了减少重复劳动力而建立的一个工具;. DOS批处理已经慢慢淡出大家的视线,在windowswindows中我们完全可以写shellshell, python s ...
最新文章
- 线程关键字、锁、同步集合笔记
- 领英2017报告:机器学习、大数据工程师成为最热门的新兴职业
- Illustrator+FontLab 进行字体设计教程
- python【力扣LeetCode算法题库】6-Z 字形变换
- 关于SUID、SGID、Sticky
- mysql复制表结构和数据
- treeset java_Java TreeSet add()方法与示例
- Eclipse 2017最佳20个插件
- 如何编写项目发布文档
- 1988-2020年各省、分城乡基尼系数、基尼系数计算及相关经典文献、1978-2019年中国省市恩格尔系数表、泰尔指数计算模板、208个地级市和31个省、市城乡泰尔指数
- 东北大学数理统计 2019-2020 年试题答案
- Linux入门基础命令教程
- 停车场管理(C语言版)
- java使用ffmpeg对视频进行转码和分辨率转换
- Autorun病毒kocmbcd.exe分析
- 图像大小调整_如何在Windows中调整图像和照片的大小
- 诺威健康IPO招股书失效:称将继续录得巨额亏损,TPG持股74.6%
- 因为一个MySQL权限问题引发的填坑之一(ERROR1045:Access Denied for user 'root'@'localhost' (using password:YES))
- 信息安全系统设计基础实验一
- 等额本息Vs等额本金