找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
售后投诉-点我祝贺本站成立6周年,赠送站群seo全套工具包
购买软件必看VS销售客服必看守则
查看: 388|回复: 0

百度+搜狗快排程序核心代码开源

[复制链接]

357

主题

145

回帖

2883

积分

管理员

积分
2883
发表于 2020-9-17 03:58:38 | 显示全部楼层 |阅读模式
百度+搜索快排程序核心代码开源

# 快排程序二次开发
[TOC]
## 基于IDEA二次开发
> 目的是希望拉下代码可以跑起来;
### 前置条件
1. 研发是基于`IEDA2019`版本;(如果用`eclipse`,请`github`拉去代码)
2. 研发基于`JDK1.8`
3. 并未使用mysql等数据库等,所以只需要`jdk+idea`即可(测试机一定要有`chrome`浏览器)
### 步骤
1. 拉去代码(这步不会我就尴尬了,也可以跟我要我的程序包`QQ`私我)
2. 拉去完后参考下图(这个图放大了看下,我标了类是干嘛的)
![](image/图片1.png)
3. 运行入口:`main.Main`这个类;
4. 修改配置文件:
– 这个配置文件,其实就是咱们想刷的词和自己的域名;
– 在`github`上找一下这个文件,如下图的这个文件;
![](image/图片2.png)
将此文件,放入你的项目外的文件夹即可,他会自己找到这个配置文件,我举个栗子;
比如你的项目在`d://a/sg`那么此时你的项目名字叫`sg`,那么就放在同一个目录下,
5. 运行:如下图
![](image/图片3.png)
6. 看控制台:
![](image/图片4.png)
7. 到这里基本上你就运行成功了。
8. 如果你要运行`360`这个快排,那么就把 百度&搜狗注释掉。反正只能运行一个类,同时;
## 配置文件详解
“` ini
test10:doman=www.shanghai.gov.cn;searchWords=上海;bigWord=100;
test11:doman=www.a.gov.cn;searchWords=厦门;bigWord=10;
test12:doman=www.b.gov.cn;searchWords=随便;bigWord=20;
“`
– `test`这个是`id`的编号反正可以从`0-500`都可以,但是不要重复
– `doman=你想刷的网站的域名`
– `searchWords=你想刷的词`
– `bigWord=你的词被刷的概率`(比如你想刷5个词,但是想第一个词概率高就多一点,`1-100`)
“` ini
#############0搜狗1是360,2是百度#######2月6日最后修改时间…#的配置
ipChange=0 # 0就是不要换ip,1是要自动换ip;ip怎么换,我下面会写
path=/home/sougou/log # 你日志的目录,这个我后面应该没用了,随便写一个目录好了
chromeCatchPath=/home/sougou/chrome # 这个也随便写一个吧,我好想也没用了
sougou-360=0 # 这个也随便写一个吧,我好想也没用了
cookie= # 这个暂时也没用了,可以写空,或者随便写
“`
配置文件应该放在哪?上面仔细看看,配置文件源码中在哪?也上面看下;
## linux 打包部署
当写好程序后,需要在`linux`上跑,原因是这个必须要换大量`ip`才有效果;
这个功能我已经内嵌好了。原理就是利用全国混拨`vps`的拨号功能,去调用拨号,去跑;
“`
有问题在call我吧,我暂时想到这么多;
### 第二版补充内容
—-
到此为止就差不多了。

百度核心代码
package engines;
import com.teamdev.jxbrowser.chromium.*;
import com.teamdev.jxbrowser.chromium.BrowserKeyEvent.KeyModifiers;
import com.teamdev.jxbrowser.chromium.BrowserKeyEvent.KeyModifiersBuilder;
import com.teamdev.jxbrowser.chromium.BrowserMouseEvent.BrowserMouseEventBuilder;
import com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseButtonType;
import com.teamdev.jxbrowser.chromium.dom.By;
import com.teamdev.jxbrowser.chromium.dom.DOMElement;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import config.UA;
import tool.*;
import javax.swing.*;
import java.awt.*;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseButtonType.PRIMARY;
import static com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseEventType.*;
import static com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseScrollType.WHEEL_BLOCK_SCROLL;
public class Baidu {
static boolean show=true;
static EnglishResolution.WidthHeiht widthHeiht = EnglishResolution.getEnglishResolution(EnglishResolution.PC);
static long startMonitor=System.currentTimeMillis();
public static void main(String[] args) throws Exception {
new Thread(new Monitor(1000*60*5)).start();
if(“1”.equals(PropertyConfig.getPropertyV(“ipChange”).trim()))
{
MNET.ipChange();
System.out.println(“换IP….”);
}else {
System.out.println(“忘记没有换IP吗?”);
}
String doman=null, searchwords=null,title=null;
try {
System.out.println(“***************测试大量点击,没有展示…***********************”);
List<String> stringList=new ArrayList();
for(int i=0;i<500;i++){
String str= PropertyConfig.getPropertyV(“test”+i);
if(str!=null&&str.trim().length()>2){
stringList.add(str);
System.out.println(str);
}
}
if(stringList.size()>0){
String item= L.shenChoose(stringList);
doman= RegexParse.baseParse(item,”doman=([\\S]*?);”,1);
searchwords= RegexParse.baseParse(item,”searchWords=([\\S]*?);”,1);
/**
* 这个地方会空指针,并不是程序的问题,而是我并没有开放百度的参数;
* */
//String url=null;
String url=”https://www.baidu.com/s?ie=utf-8&wd=”+searchwords+”&et=”+doman;
// String url=”https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=” + L.randomNumber(0, 1) + “&tn=baiduhome_pg&wd=” + searchwords + “&ct=” + L.rm1() + “&et=” + doman + “&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=” + L.randomNumber(0, 3) + “&rsv_sug1=” + L.randomNumber(1, 2) + “&rsv_sug7=100&rsv_sug2=0&inputT=” + L.randomNumber(100, 5000);
System.out.println(“==============================================================================”);
System.err.println(“这个地方会空指针,并不是程序的问题,而是我并没有开放百度的参数;如果需要加群了解;或者捐赠了解”);
System.out.println(“==============================================================================”);
System.out.println(“当前准备运行的是:”+doman+”>>”+searchwords+”>>”+url);
if(item!=null&&doman!=null){
init();
Browser browser = getBroser();
BrowserPreferences.setUserAgent(UA.getUa(UA.PC));
browser.setSize(widthHeiht.getWidth(), widthHeiht.getHeight());
new Thread(new Monitor(168)).start();
logic(browser, doman, searchwords, widthHeiht,url,title);
}
}
}catch (Throwable e){
e.printStackTrace();
System.exit(0);
}
}
static String getSource(){
List<String> arrays= Arrays.asList(“baidu”,”50000049_hao_pg”,”site888_3_pg”,”56060048_4_pg”,”97724291_hao_pg”,”02049043_23_pg”,”77092190_pg”,”50000041_hao_pg”,”02003390_23_hao_pg”,”02049043_6_pg”,”request_28_pg”,”monline_3_dg”,”95156753_hao_pg”,”91121590_hao_pg”,”94962502_hao_pg”,”66069139_dg”,”1314″,”request_2_pg”,”maxco4″,”wjlhkp_pg”,”78040160_15_pg”,”site5566″,”58025142_5_oem_dg”,”78040160_15_pg”,”27073201_2_hao_pg”,”58025142_5_oem_dg”);
return arrays.get(L.randomNumber(0,arrays.size()-1));
}
static void logic(Browser browser, String doman, String searchwords, EnglishResolution.WidthHeiht widthHeiht, String url, String title) throws Exception {
browser.setPopupHandler(new PopupHandler() {
public PopupContainer handlePopup(PopupParams params) {
return new PopupContainer() {
public void insertBrowser(final Browser browser, final Rectangle initialBounds) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
BrowserView browserView = new BrowserView(browser);
browserView.setPreferredSize(initialBounds.getSize());
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.pack();
frame.setSize(1024, 768);
frame.setLocation(initialBounds.getLocation());
frame.setVisible(true);
System.out.println(“进入监听”+browser.getURL());
while (true){
if(browser.getURL().contains(doman)&&!browser.getURL().contains(“baidu”)&&!browser.getURL().contains(“video”))
{
System.out.println(“============================================================”);
System.out.println(“$$$$$$$$$$$$$$$$$$$$点击成功:”+browser.getURL()+”总耗时:”+((System.currentTimeMillis()-startMonitor)/1000)+”秒”);
System.out.println(“============================================================”);
try {
Thread.sleep(L.randomNumber(1000,5000));
} catch (InterruptedException e) {
e.printStackTrace();
}
browser.dispose();
System.exit(0);
break;
}
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
};
}
});
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if(browser.getURL().contains(“antispider”)){
System.out.println(“封锁了…”);
System.exit(0);
}
System.out.println(“加载完毕…..”);
for(int i=1;i<10;i++){
DOMElement domElement=browser.getDocument().findElement(By.xpath(“//*[@id=\””+i+”\”]”));
if(domElement==null)
continue;
System.out.println(domElement.getInnerText()+”title”+title+”doman”+doman);
if(domElement.getInnerHTML().contains(doman)){
System.out.println(browser.getURL());
System.out.println(“找到匹配开始点击….”);
excute(browser, domElement, widthHeiht);
System.out.println(domElement.getInnerText());
break ;
}
}
}
});
browser.loadURL(url);
}
private static void forwardMousePressEvent(Browser browser,
MouseButtonType buttonType,
int x,
int y,
int globalX,
int globalY) {
BrowserMouseEventBuilder builder = new BrowserMouseEventBuilder();
builder.setEventType(MOUSE_PRESSED)
.setButtonType(buttonType)
.setX(x)
.setY(y)
.setGlobalX(globalX)
.setGlobalY(globalY)
.setClickCount(1)
.setModifiers(new KeyModifiersBuilder().mouseButton().build());
browser.forwardMouseEvent(builder.build());
}
private static void forwardMouseReleaseEvent(Browser browser,
MouseButtonType buttonType,
int x,
int y,
int globalX,
int globalY) {
BrowserMouseEventBuilder builder = new BrowserMouseEventBuilder();
builder.setEventType(MOUSE_RELEASED)
.setButtonType(buttonType)
.setX(x)
.setY(y)
.setGlobalX(globalX)
.setGlobalY(globalY)
.setClickCount(1)
.setModifiers(KeyModifiers.NO_MODIFIERS);
browser.forwardMouseEvent(builder.build());
}
private static void forwardMouseClickEvent(Browser browser,
MouseButtonType buttonType,
int x,
int y,
int globalX,
int globalY) {
forwardMousePressEvent(browser, buttonType, x, y, globalX, globalY);
forwardMouseReleaseEvent(browser, buttonType, x, y, globalX, globalY);
}
private static void forwardMouseScrollEvent(Browser browser,
int unitsToScroll,
int x,
int y) {
BrowserMouseEventBuilder builder = new BrowserMouseEventBuilder();
builder.setEventType(MOUSE_WHEEL)
.setX(x)
.setY(y)
.setGlobalX(0)
.setGlobalY(0)
.setScrollBarPixelsPerLine(25)
.setScrollType(WHEEL_BLOCK_SCROLL)
.setWindowX(widthHeiht.width)
.setWindowY(widthHeiht.height)
.setUnitsToScroll(unitsToScroll);
browser.forwardMouseEvent(builder.build());
}
public static void excute(Browser browser, DOMElement domElement, EnglishResolution.WidthHeiht widthHeiht) {
try {
randomMove(browser,widthHeiht.width,widthHeiht.height);
scroll(browser, domElement, widthHeiht);
Rectangle rectangle = domElement.getBoundingClientRect();
System.out.println(“>>>>>” + rectangle.x + “|” + rectangle.y + “|” + rectangle.width + “|” + rectangle.height + “|” + widthHeiht.width + “|” + widthHeiht.height);
domElement=domElement.findElement(By.xpath(“h3/a”));
move(browser, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
//browser.executeJavaScript(“window.scrollTo(” + rectangle.x + “,” + (rectangle.y-(100+(L.randomNumber(1,68)))) + “);”);
randomMove(browser,widthHeiht.width,widthHeiht.height);
targetMove(browser,domElement);
// domElement.click();
System.out.println(“___________________________________________________________”);
domElement.scrollToBottom();
rectangle = domElement.getBoundingClientRect();
forwardMouseClickEvent(browser, PRIMARY, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
} catch (Exception e) {
e.printStackTrace();
}
}
static int Iloc= L.randomNumber(0,2);
public static void scroll(Browser browser, DOMElement domElement, EnglishResolution.WidthHeiht widthHeiht){
Rectangle rectangleL = domElement.getBoundingClientRect();
int locL=rectangleL.y;
int scrollH=0,loc=-1;
for(int i=0;i<30;i++){
try {
scrollH+= L.randomNumber(80,300);
browser.executeJavaScript(“window.scrollTo(” + L.randomNumber(10,rectangleL.x) + “,” +scrollH + “);”);
Thread.sleep(L.randomNumber(600,6000));
if(scrollH>locL){
Iloc–;
}
if(Iloc<0)
break;
System.out.println(“scoll:”+i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=0;i<30;i++){
try {
scrollH-= L.randomNumber(80,300);
if(scrollH<0)
scrollH= L.randomNumber(0,10);
browser.executeJavaScript(“window.scrollTo(” + L.randomNumber(10,rectangleL.x) + “,” +scrollH + “);”);
Thread.sleep(L.randomNumber(600,3000));
System.out.println(“scrollH:”+scrollH+”height:”+locL);
if((scrollH+150)<locL||scrollH<20){
break;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/*********
* 准备工作
*/
public static void init(){
try {
Field e = ba.class.getDeclaredField(“e”);
e.setAccessible(true);
Field f = ba.class.getDeclaredField(“f”);
f.setAccessible(true);
Field modifersField = Field.class.getDeclaredField(“modifiers”);
modifersField.setAccessible(true);
modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL);
modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
e.set(null, new BigInteger(“1”));
f.set(null, new BigInteger(“1”));
modifersField.setAccessible(false);
} catch (Exception e1) {
e1.printStackTrace();
}
}
public static void randomMove(Browser browser,int width,int height) {
long startT=System.currentTimeMillis();
System.out.println(“随机晃动鼠标开始”);
for(int i = 0; i< L.randomNumber(1,2); i++){
int sx=0;
int sy=0;
int ex=width;
int ey=height;
int xxx=0,yyy=0;
int Monitor= L.randomNumber(100,200),Monitori= L.randomNumber(0,1);
int z=50,zi=0;
int s= L.randomNumber(0,3);
if(s==0){
xxx=0;
yyy=0;
}else if(s==1){
xxx=width;
yyy=height;
}else if(s==2){
xxx=0;
yyy=height;
}else if(s==3){
xxx=width;
yyy=0;
}
for(int qq = 0; qq< L.randomNumber(1,2); qq++){
if(s==0){
xxx+= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
yyy+= L.randomNumber(z-(zi+1),z-(zi++));
}else if(s==1){
xxx-= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
yyy-= L.randomNumber(z-(zi+1),z-(zi++));
}else if(s==2){
xxx+= L.randomNumber(z-(zi+1),z-(zi++));
yyy-= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
}else if(s==3){
xxx-= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
yyy+= L.randomNumber(z-(zi+1),z-(zi++));
}
yyy+= L.randomNumber(z-(zi+2),z-(zi++));;
if(xxx<0||xxx>width||yyy<0||yyy>height)
break;
move(browser,xxx,yyy,width,height);
try {
Monitor=(Monitor<20)?20Monitor- L.randomNumber(Monitori+3,Monitori+25));
Monitor=Monitor<1?1:Monitor;
Thread.sleep(Monitor);
} catch (Exception e) {
}
}
for(int j = 0; j< L.randomNumber(0,2); j++){
xxx= L.randomNumber(0,width);
yyy= L.randomNumber(0,height);
int ccdd= L.randomNumber(0,3);
for(int ii=0;ii<30;ii++){
if(ccdd==0)
{
xxx+=ii+ L.randomNumber(0,ii);
yyy+=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
}
if(ccdd==1)
{
xxx-=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
yyy-=ii+ L.randomNumber(0,ii);
}
if(ccdd==2)
{
xxx-=ii+ L.randomNumber(0,ii);
yyy+=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
}
if(ccdd==3)
{
xxx+=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
yyy-=ii+ L.randomNumber(0,ii);
}
move(browser,xxx,yyy,width,height);
try {
Monitor=(Monitor<20)?20Monitor- L.randomNumber(Monitori+3,Monitori+25));
Monitor=Monitor<1?1:Monitor;
Thread.sleep(Monitor+ L.randomNumber(0,10));
} catch (Exception e) {
}
}
}
}
System.out.println(“随机晃动鼠标完毕 耗时:”+(System.currentTimeMillis()-startT));
}
public static void move(Browser browser,int x,int y,int gx,int gy){
BrowserMouseEvent.BrowserMouseEventBuilder builder = new BrowserMouseEvent.BrowserMouseEventBuilder();
builder.setEventType(MOUSE_MOVED)
.setX(x)
.setY(y)
.setGlobalX(gx)
.setGlobalY(gy);
browser.forwardMouseEvent(builder.build());
}
public static void targetMove(Browser browser,DOMElement domElement){
try {
Rectangle rectangle=domElement.getBoundingClientRect();
move(browser, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
} catch (Throwable e) {
System.out.println(“移动到指定的元素,这个出现错误,认为不重要,忽略”);
}
}
static Browser getBroser(){
long startMonitor=System.currentTimeMillis();
System.out.println(“开始准备各种逻辑”);
BrowserPreferences.setChromiumSwitches(
“–disable-gpu”,
“–disable-gpu-compositing”,
“–enable-begin-frame-scheduling”
,”–software-rendering-fps=60″
);
//构造隐身模式的浏览器
BrowserPreferences.setUserAgent(UA.getUa(UA.PC));
// BrowserContextParams params = new BrowserContextParams(“user-data”);
BrowserContextParams params = new BrowserContextParams(” /home/sougou/user-data”);
params.setStorageType(StorageType.MEMORY);
BrowserContext browserContext = new BrowserContext(params);
Browser browser = new Browser(BrowserType.LIGHTWEIGHT,browserContext);
// BrowserPreferences preferences = browser.getPreferences();
// preferences.setImagesEnabled(false);
// preferences.setJavaScriptEnabled(false);
// browser.setPreferences(preferences);
//清空缓存
browser.getCacheStorage().clearCache();
browser.getLocalWebStorage().clear();
browser.getCookieStorage().deleteAll();
browser.getSessionWebStorage().clear();
//设置浏览器头,和浏览器尺寸
EnglishResolution.WidthHeiht widthHeiht= EnglishResolution.getEnglishResolution(EnglishResolution.PC);;
browser.setSize(widthHeiht.getWidth(),widthHeiht.getHeight());
System.out.println(“组件初始化完成…耗时:”+(System.currentTimeMillis()-startMonitor)/1000+”秒”);
/*************************是否显示界面************************************/
BrowserView view = new BrowserView(browser);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//不显示标题栏,最大化,最小化,退出按钮
//frame.setUndecorated(true);
frame.setSize(widthHeiht.getWidth(),widthHeiht.getHeight());
frame.add(view, BorderLayout.CENTER);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLocationByPlatform(true);
frame.setVisible(true);
/*************************************************************/
return browser;
}
/***
* 根据时间段判断是否需要点击;
*/
static boolean isClick(){
int h= Monitor.getTimeH();
System.out.println(“当前小时为:”+h);
switch (h){
case 1:{
return gailv(0);
}
case 2:{
return gailv(0);
}
case 3:{
return gailv(0);
}
case 4:{
return gailv(0);
}
case 5:{
return gailv(0);
}
case 6:{
return gailv(0);
}
case 7:{
return gailv(0);
}
case 8:{
return gailv(30);
}
case 9:{
return gailv(40);
}
case 10:{
return gailv(70);
}
case 11:{
return gailv(80);
}
case 12:{
return gailv(50);
}
case 13:{
return gailv(80);
}
case 14:{
return gailv(120);
}
case 15:{
return gailv(160);
}
case 16:{
return gailv(200);
}
case 17:{
return gailv(140);
}
case 18:{
return gailv(300);
}
case 19:{
return gailv(720);
}
case 20:{
return gailv(360);
}
case 21:{
return gailv(200);
}
case 22:{
return gailv(80);
}
case 23:{
return gailv(30);
}
case 24:{
return gailv(5);
}
case 0:{
return gailv(5);
}
}
return false;
}
static boolean gailv(int baifenbi){
baifenbi=baifenbi*5;
if(360==baifenbi){
return true;
}
if(0==baifenbi)
return false;
for(int i=0;i<baifenbi;i++){
int jishu= L.randomNumber(1,360);
if(jishu==1)
return true;
}
return false;
}
}



1
  1. package engines;

  2. import com.teamdev.jxbrowser.chromium.*;
  3. import com.teamdev.jxbrowser.chromium.BrowserKeyEvent.KeyModifiers;
  4. import com.teamdev.jxbrowser.chromium.BrowserKeyEvent.KeyModifiersBuilder;
  5. import com.teamdev.jxbrowser.chromium.BrowserMouseEvent.BrowserMouseEventBuilder;
  6. import com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseButtonType;
  7. import com.teamdev.jxbrowser.chromium.dom.By;
  8. import com.teamdev.jxbrowser.chromium.dom.DOMElement;
  9. import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
  10. import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
  11. import com.teamdev.jxbrowser.chromium.swing.BrowserView;
  12. import config.UA;
  13. import tool.*;

  14. import javax.swing.*;
  15. import java.awt.*;
  16. import java.lang.reflect.Field;
  17. import java.lang.reflect.Modifier;
  18. import java.math.BigInteger;
  19. import java.util.ArrayList;
  20. import java.util.Arrays;
  21. import java.util.List;
  22. import static com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseButtonType.PRIMARY;
  23. import static com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseEventType.*;
  24. import static com.teamdev.jxbrowser.chromium.BrowserMouseEvent.MouseScrollType.WHEEL_BLOCK_SCROLL;


  25. public class Baidu {
  26.    static  boolean show=true;
  27.    static EnglishResolution.WidthHeiht widthHeiht = EnglishResolution.getEnglishResolution(EnglishResolution.PC);
  28.     static long startMonitor=System.currentTimeMillis();
  29.     public static void main(String[] args) throws Exception {
  30.         new Thread(new Monitor(1000*60*5)).start();
  31.         if("1".equals(PropertyConfig.getPropertyV("ipChange").trim()))
  32.         {
  33.             MNET.ipChange();
  34.             System.out.println("换IP....");
  35.         }else {
  36.             System.out.println("忘记没有换IP吗?");
  37.         }

  38.         String doman=null,  searchwords=null,title=null;
  39.         try {
  40.             System.out.println("***************测试大量点击,没有展示...***********************");
  41.             List<String> stringList=new ArrayList();
  42.             for(int i=0;i<500;i++){
  43.                 String str= PropertyConfig.getPropertyV("test"+i);
  44.                 if(str!=null&&str.trim().length()>2){
  45.                     stringList.add(str);
  46.                     System.out.println(str);
  47.                 }
  48.             }
  49.             if(stringList.size()>0){
  50.                 String item= L.shenChoose(stringList);
  51.                 doman= RegexParse.baseParse(item,"doman=([\\S]*?);",1);
  52.                 searchwords= RegexParse.baseParse(item,"searchWords=([\\S]*?);",1);
  53.                 /**
  54.                  * 这个地方会空指针,并不是程序的问题,而是我并没有开放百度的参数;
  55.                  * */
  56.                 //String url=null;
  57.                 String url="https://www.baidu.com/s?ie=utf-8&wd="+searchwords+"&et="+doman;
  58.                // String url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=" + L.randomNumber(0, 1) + "&tn=baiduhome_pg&wd=" + searchwords + "&ct=" + L.rm1() + "&et=" + doman + "&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=" + L.randomNumber(0, 3) + "&rsv_sug1=" + L.randomNumber(1, 2) + "&rsv_sug7=100&rsv_sug2=0&inputT=" + L.randomNumber(100, 5000);
  59.                 System.out.println("==============================================================================");
  60.                 System.err.println("这个地方会空指针,并不是程序的问题,而是我并没有开放百度的参数;如果需要加群了解;或者捐赠了解");
  61.                 System.out.println("==============================================================================");
  62.                 System.out.println("当前准备运行的是:"+doman+">>"+searchwords+">>"+url);
  63.                 if(item!=null&&doman!=null){
  64.                         init();
  65.                         Browser browser = getBroser();
  66.                         BrowserPreferences.setUserAgent(UA.getUa(UA.PC));
  67.                         browser.setSize(widthHeiht.getWidth(), widthHeiht.getHeight());
  68.                         new Thread(new Monitor(168)).start();
  69.                         logic(browser, doman, searchwords, widthHeiht,url,title);
  70.                 }
  71.             }
  72.         }catch (Throwable e){
  73.             e.printStackTrace();
  74.             System.exit(0);
  75.         }
  76.     }

  77.     static String  getSource(){
  78.         List<String> arrays= Arrays.asList("baidu","50000049_hao_pg","site888_3_pg","56060048_4_pg","97724291_hao_pg","02049043_23_pg","77092190_pg","50000041_hao_pg","02003390_23_hao_pg","02049043_6_pg","request_28_pg","monline_3_dg","95156753_hao_pg","91121590_hao_pg","94962502_hao_pg","66069139_dg","1314","request_2_pg","maxco4","wjlhkp_pg","78040160_15_pg","site5566","58025142_5_oem_dg","78040160_15_pg","27073201_2_hao_pg","58025142_5_oem_dg");
  79.         return  arrays.get(L.randomNumber(0,arrays.size()-1));
  80.     }

  81.     static void logic(Browser browser, String doman, String searchwords, EnglishResolution.WidthHeiht widthHeiht, String url, String title) throws Exception {
  82.         browser.setPopupHandler(new PopupHandler() {
  83.             public PopupContainer handlePopup(PopupParams params) {
  84.                 return new PopupContainer() {
  85.                     public void insertBrowser(final Browser browser, final Rectangle initialBounds) {
  86.                         SwingUtilities.invokeLater(new Runnable() {
  87.                             @Override
  88.                             public void run() {
  89.                                     BrowserView browserView = new BrowserView(browser);
  90.                                     browserView.setPreferredSize(initialBounds.getSize());
  91.                                     final JFrame frame = new JFrame();
  92.                                     frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  93.                                     frame.add(browserView, BorderLayout.CENTER);
  94.                                     frame.pack();
  95.                                     frame.setSize(1024, 768);
  96.                                     frame.setLocation(initialBounds.getLocation());
  97.                                     frame.setVisible(true);
  98.                                 System.out.println("进入监听"+browser.getURL());
  99.                                 while (true){
  100.                                     if(browser.getURL().contains(doman)&&!browser.getURL().contains("baidu")&&!browser.getURL().contains("video"))
  101.                                     {
  102.                                         System.out.println("============================================================");
  103.                                         System.out.println("$$$$$点击成功:"+browser.getURL()+"总耗时:"+((System.currentTimeMillis()-startMonitor)/1000)+"秒");
  104.                                         System.out.println("============================================================");
  105.                                         try {
  106.                                             Thread.sleep(L.randomNumber(1000,5000));
  107.                                         } catch (InterruptedException e) {
  108.                                             e.printStackTrace();
  109.                                         }
  110.                                         browser.dispose();
  111.                                         System.exit(0);
  112.                                         break;
  113.                                     }
  114.                                     try {
  115.                                         Thread.sleep(1000);
  116.                                     } catch (Exception e) {
  117.                                         e.printStackTrace();
  118.                                     }
  119.                                 }
  120.                             }
  121.                         });
  122.                     }
  123.                 };
  124.             }
  125.         });

  126.         browser.addLoadListener(new LoadAdapter() {
  127.             @Override
  128.             public void onFinishLoadingFrame(FinishLoadingEvent event) {
  129.                 if(browser.getURL().contains("antispider")){
  130.                     System.out.println("封锁了...");
  131.                     System.exit(0);
  132.                 }
  133.                 System.out.println("加载完毕.....");
  134.                 for(int i=1;i<10;i++){
  135.                     DOMElement domElement=browser.getDocument().findElement(By.xpath("//*[@id=""+i+""]"));
  136.                     if(domElement==null)
  137.                         continue;
  138.                     System.out.println(domElement.getInnerText()+"title"+title+"doman"+doman);
  139.                     if(domElement.getInnerHTML().contains(doman)){
  140.                             System.out.println(browser.getURL());
  141.                             System.out.println("找到匹配开始点击....");
  142.                             excute(browser, domElement, widthHeiht);
  143.                             System.out.println(domElement.getInnerText());
  144.                         break ;
  145.                     }
  146.                 }
  147.             }
  148.         });
  149.         browser.loadURL(url);
  150.     }




  151.     private static void forwardMousePressEvent(Browser browser,
  152.                                                MouseButtonType buttonType,
  153.                                                int x,
  154.                                                int y,
  155.                                                int globalX,
  156.                                                int globalY) {
  157.         BrowserMouseEventBuilder builder = new BrowserMouseEventBuilder();
  158.         builder.setEventType(MOUSE_PRESSED)
  159.                 .setButtonType(buttonType)
  160.                 .setX(x)
  161.                 .setY(y)
  162.                 .setGlobalX(globalX)
  163.                 .setGlobalY(globalY)
  164.                 .setClickCount(1)
  165.                 .setModifiers(new KeyModifiersBuilder().mouseButton().build());
  166.         browser.forwardMouseEvent(builder.build());
  167.     }

  168.     private static void forwardMouseReleaseEvent(Browser browser,
  169.                                                  MouseButtonType buttonType,
  170.                                                  int x,
  171.                                                  int y,
  172.                                                  int globalX,
  173.                                                  int globalY) {
  174.         BrowserMouseEventBuilder builder = new BrowserMouseEventBuilder();
  175.         builder.setEventType(MOUSE_RELEASED)
  176.                 .setButtonType(buttonType)
  177.                 .setX(x)
  178.                 .setY(y)
  179.                 .setGlobalX(globalX)
  180.                 .setGlobalY(globalY)
  181.                 .setClickCount(1)
  182.                 .setModifiers(KeyModifiers.NO_MODIFIERS);
  183.         browser.forwardMouseEvent(builder.build());
  184.     }

  185.     private static void forwardMouseClickEvent(Browser browser,
  186.                                                MouseButtonType buttonType,
  187.                                                int x,
  188.                                                int y,
  189.                                                int globalX,
  190.                                                int globalY) {
  191.         forwardMousePressEvent(browser, buttonType, x, y, globalX, globalY);
  192.         forwardMouseReleaseEvent(browser, buttonType, x, y, globalX, globalY);
  193.     }

  194.     private static void forwardMouseScrollEvent(Browser browser,
  195.                                                 int unitsToScroll,
  196.                                                 int x,
  197.                                                 int y) {
  198.         BrowserMouseEventBuilder builder = new BrowserMouseEventBuilder();
  199.         builder.setEventType(MOUSE_WHEEL)
  200.                 .setX(x)
  201.                 .setY(y)
  202.                 .setGlobalX(0)
  203.                 .setGlobalY(0)
  204.                 .setScrollBarPixelsPerLine(25)
  205.                 .setScrollType(WHEEL_BLOCK_SCROLL)
  206.                 .setWindowX(widthHeiht.width)
  207.                 .setWindowY(widthHeiht.height)
  208.                 .setUnitsToScroll(unitsToScroll);
  209.         browser.forwardMouseEvent(builder.build());
  210.     }

  211.     public static void excute(Browser browser, DOMElement domElement, EnglishResolution.WidthHeiht widthHeiht) {
  212.             try {
  213.                 randomMove(browser,widthHeiht.width,widthHeiht.height);
  214.                 scroll(browser, domElement, widthHeiht);
  215.                 Rectangle  rectangle = domElement.getBoundingClientRect();
  216.                 System.out.println(">>>>>" + rectangle.x + "|" + rectangle.y + "|" + rectangle.width + "|" + rectangle.height + "|" + widthHeiht.width + "|" + widthHeiht.height);
  217.                 domElement=domElement.findElement(By.xpath("h3/a"));
  218.                 move(browser, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
  219.                 //browser.executeJavaScript("window.scrollTo(" + rectangle.x + "," + (rectangle.y-(100+(L.randomNumber(1,68)))) + ");");
  220.                 randomMove(browser,widthHeiht.width,widthHeiht.height);
  221.                 targetMove(browser,domElement);
  222.                // domElement.click();
  223.                 System.out.println("___________________________________________________________");
  224.                 domElement.scrollToBottom();
  225.                 rectangle = domElement.getBoundingClientRect();
  226.                 forwardMouseClickEvent(browser, PRIMARY, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
  227.             } catch (Exception e) {
  228.                 e.printStackTrace();
  229.             }
  230.         }



  231.     static  int Iloc= L.randomNumber(0,2);
  232.     public static void  scroll(Browser browser, DOMElement domElement, EnglishResolution.WidthHeiht widthHeiht){
  233.         Rectangle rectangleL = domElement.getBoundingClientRect();
  234.         int locL=rectangleL.y;
  235.         int scrollH=0,loc=-1;
  236.         for(int i=0;i<30;i++){
  237.             try {
  238.                 scrollH+= L.randomNumber(80,300);
  239.                 browser.executeJavaScript("window.scrollTo(" + L.randomNumber(10,rectangleL.x) + "," +scrollH + ");");
  240.                 Thread.sleep(L.randomNumber(600,6000));
  241.                 if(scrollH>locL){
  242.                     Iloc--;
  243.                 }
  244.                 if(Iloc<0)
  245.                     break;
  246.                 System.out.println("scoll:"+i);
  247.             } catch (InterruptedException e) {
  248.                 e.printStackTrace();
  249.             }
  250.         }
  251.         for(int i=0;i<30;i++){
  252.             try {
  253.                 scrollH-= L.randomNumber(80,300);
  254.                 if(scrollH<0)
  255.                     scrollH= L.randomNumber(0,10);
  256.                 browser.executeJavaScript("window.scrollTo(" + L.randomNumber(10,rectangleL.x) + "," +scrollH + ");");
  257.                 Thread.sleep(L.randomNumber(600,3000));
  258.                 System.out.println("scrollH:"+scrollH+"height:"+locL);
  259.                 if((scrollH+150)<locL||scrollH<20){
  260.                     break;
  261.                 }
  262.             } catch (InterruptedException e) {
  263.                 e.printStackTrace();
  264.             }
  265.         }
  266.     }

  267.     /*********
  268.      * 准备工作
  269.      */
  270.     public  static void   init(){
  271.         try {
  272.             Field e = ba.class.getDeclaredField("e");
  273.             e.setAccessible(true);
  274.             Field f = ba.class.getDeclaredField("f");
  275.             f.setAccessible(true);
  276.             Field modifersField = Field.class.getDeclaredField("modifiers");
  277.             modifersField.setAccessible(true);
  278.             modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL);
  279.             modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
  280.             e.set(null, new BigInteger("1"));
  281.             f.set(null, new BigInteger("1"));
  282.             modifersField.setAccessible(false);
  283.         } catch (Exception e1) {
  284.             e1.printStackTrace();
  285.         }
  286.     }


  287.     public  static  void randomMove(Browser browser,int width,int height) {
  288.         long startT=System.currentTimeMillis();
  289.         System.out.println("随机晃动鼠标开始");
  290.         for(int i = 0; i< L.randomNumber(1,2); i++){
  291.             int sx=0;
  292.             int sy=0;
  293.             int ex=width;
  294.             int ey=height;
  295.             int xxx=0,yyy=0;
  296.             int Monitor= L.randomNumber(100,200),Monitori= L.randomNumber(0,1);
  297.             int z=50,zi=0;
  298.             int s= L.randomNumber(0,3);
  299.             if(s==0){
  300.                 xxx=0;
  301.                 yyy=0;
  302.             }else if(s==1){
  303.                 xxx=width;
  304.                 yyy=height;
  305.             }else if(s==2){
  306.                 xxx=0;
  307.                 yyy=height;
  308.             }else if(s==3){
  309.                 xxx=width;
  310.                 yyy=0;
  311.             }
  312.             for(int qq = 0; qq< L.randomNumber(1,2); qq++){
  313.                 if(s==0){
  314.                     xxx+= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
  315.                     yyy+= L.randomNumber(z-(zi+1),z-(zi++));
  316.                 }else if(s==1){
  317.                     xxx-= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
  318.                     yyy-= L.randomNumber(z-(zi+1),z-(zi++));
  319.                 }else if(s==2){
  320.                     xxx+= L.randomNumber(z-(zi+1),z-(zi++));
  321.                     yyy-= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
  322.                 }else if(s==3){
  323.                     xxx-= L.randomNumber(z-(zi+1),z-(zi++)+ L.randomNumber(0,5));
  324.                     yyy+= L.randomNumber(z-(zi+1),z-(zi++));
  325.                 }
  326.                 yyy+= L.randomNumber(z-(zi+2),z-(zi++));;
  327.                 if(xxx<0||xxx>width||yyy<0||yyy>height)
  328.                     break;
  329.                 move(browser,xxx,yyy,width,height);
  330.                 try {
  331.                     Monitor=(Monitor<20)?20:(Monitor- L.randomNumber(Monitori+3,Monitori+25));
  332.                     Monitor=Monitor<1?1:Monitor;
  333.                     Thread.sleep(Monitor);
  334.                 } catch (Exception e) {
  335.                 }
  336.             }
  337.             for(int j = 0; j< L.randomNumber(0,2); j++){
  338.                 xxx= L.randomNumber(0,width);
  339.                 yyy= L.randomNumber(0,height);
  340.                 int ccdd= L.randomNumber(0,3);
  341.                 for(int ii=0;ii<30;ii++){
  342.                     if(ccdd==0)
  343.                     {
  344.                         xxx+=ii+ L.randomNumber(0,ii);
  345.                         yyy+=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
  346.                     }
  347.                     if(ccdd==1)
  348.                     {
  349.                         xxx-=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
  350.                         yyy-=ii+ L.randomNumber(0,ii);
  351.                     }
  352.                     if(ccdd==2)
  353.                     {
  354.                         xxx-=ii+ L.randomNumber(0,ii);
  355.                         yyy+=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
  356.                     }
  357.                     if(ccdd==3)
  358.                     {
  359.                         xxx+=ii+ L.randomNumber(0,ii+ L.randomNumber(0,5));
  360.                         yyy-=ii+ L.randomNumber(0,ii);
  361.                     }
  362.                     move(browser,xxx,yyy,width,height);
  363.                     try {
  364.                         Monitor=(Monitor<20)?20:(Monitor- L.randomNumber(Monitori+3,Monitori+25));
  365.                         Monitor=Monitor<1?1:Monitor;
  366.                         Thread.sleep(Monitor+ L.randomNumber(0,10));
  367.                     } catch (Exception e) {
  368.                     }
  369.                 }
  370.             }
  371.         }
  372.         System.out.println("随机晃动鼠标完毕 耗时:"+(System.currentTimeMillis()-startT));
  373.     }

  374.     public  static void move(Browser browser,int x,int y,int gx,int gy){
  375.         BrowserMouseEvent.BrowserMouseEventBuilder builder = new BrowserMouseEvent.BrowserMouseEventBuilder();
  376.         builder.setEventType(MOUSE_MOVED)
  377.                 .setX(x)
  378.                 .setY(y)
  379.                 .setGlobalX(gx)
  380.                 .setGlobalY(gy);
  381.         browser.forwardMouseEvent(builder.build());
  382.     }

  383.     public static  void  targetMove(Browser browser,DOMElement domElement){
  384.         try {
  385.             Rectangle  rectangle=domElement.getBoundingClientRect();
  386.             move(browser, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
  387.         } catch (Throwable e) {
  388.             System.out.println("移动到指定的元素,这个出现错误,认为不重要,忽略");
  389.         }
  390.     }



  391.     static Browser  getBroser(){
  392.         long startMonitor=System.currentTimeMillis();
  393.         System.out.println("开始准备各种逻辑");
  394.         BrowserPreferences.setChromiumSwitches(
  395.                 "--disable-gpu",
  396.                 "--disable-gpu-compositing",
  397.                 "--enable-begin-frame-scheduling"
  398.                 ,"--software-rendering-fps=60"

  399.         );
  400.         //构造隐身模式的浏览器
  401.         BrowserPreferences.setUserAgent(UA.getUa(UA.PC));
  402.        // BrowserContextParams params = new BrowserContextParams("user-data");
  403.         BrowserContextParams params = new BrowserContextParams(" /home/sougou/user-data");

  404.         params.setStorageType(StorageType.MEMORY);
  405.         BrowserContext browserContext = new BrowserContext(params);
  406.         Browser browser = new Browser(BrowserType.LIGHTWEIGHT,browserContext);

  407. //        BrowserPreferences preferences = browser.getPreferences();
  408. //        preferences.setImagesEnabled(false);
  409.         // preferences.setJavaScriptEnabled(false);
  410. //        browser.setPreferences(preferences);
  411.         //清空缓存
  412.         browser.getCacheStorage().clearCache();
  413.         browser.getLocalWebStorage().clear();
  414.         browser.getCookieStorage().deleteAll();
  415.         browser.getSessionWebStorage().clear();
  416.         //设置浏览器头,和浏览器尺寸
  417.         EnglishResolution.WidthHeiht widthHeiht= EnglishResolution.getEnglishResolution(EnglishResolution.PC);;
  418.         browser.setSize(widthHeiht.getWidth(),widthHeiht.getHeight());
  419.         System.out.println("组件初始化完成...耗时:"+(System.currentTimeMillis()-startMonitor)/1000+"秒");
  420.         /*************************是否显示界面************************************/
  421.         BrowserView view = new BrowserView(browser);
  422.         JFrame frame = new JFrame();
  423.         frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  424.         //不显示标题栏,最大化,最小化,退出按钮
  425.         //frame.setUndecorated(true);
  426.         frame.setSize(widthHeiht.getWidth(),widthHeiht.getHeight());
  427.         frame.add(view, BorderLayout.CENTER);
  428.         frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
  429.         frame.setLocationByPlatform(true);
  430.         frame.setVisible(true);
  431.         /*************************************************************/
  432.         return  browser;
  433.     }

  434.     /***
  435.      * 根据时间段判断是否需要点击;
  436.      */
  437.     static  boolean isClick(){
  438.         int h= Monitor.getTimeH();
  439.         System.out.println("当前小时为:"+h);
  440.         switch (h){
  441.             case 1:{
  442.                 return  gailv(0);
  443.             }
  444.             case 2:{
  445.                 return  gailv(0);
  446.             }
  447.             case 3:{
  448.                 return  gailv(0);
  449.             }
  450.             case 4:{
  451.                 return  gailv(0);
  452.             }
  453.             case 5:{
  454.                 return  gailv(0);
  455.             }
  456.             case 6:{
  457.                 return  gailv(0);
  458.             }
  459.             case 7:{
  460.                 return  gailv(0);
  461.             }
  462.             case 8:{
  463.                 return  gailv(30);
  464.             }
  465.             case 9:{
  466.                 return  gailv(40);
  467.             }
  468.             case 10:{
  469.                 return  gailv(70);
  470.             }
  471.             case 11:{
  472.                 return  gailv(80);
  473.             }
  474.             case 12:{
  475.                 return  gailv(50);
  476.             }
  477.             case 13:{
  478.                 return  gailv(80);
  479.             }
  480.             case 14:{
  481.                 return  gailv(120);
  482.             }
  483.             case 15:{
  484.                 return  gailv(160);
  485.             }
  486.             case 16:{
  487.                 return  gailv(200);
  488.             }
  489.             case 17:{
  490.                 return  gailv(140);
  491.             }
  492.             case 18:{
  493.                 return  gailv(300);
  494.             }
  495.             case 19:{
  496.                 return  gailv(720);
  497.             }
  498.             case 20:{
  499.                 return  gailv(360);
  500.             }
  501.             case 21:{
  502.                 return  gailv(200);
  503.             }
  504.             case 22:{
  505.                 return  gailv(80);
  506.             }
  507.             case 23:{
  508.                 return  gailv(30);
  509.             }
  510.             case 24:{
  511.                 return  gailv(5);
  512.             }
  513.             case 0:{
  514.                 return  gailv(5);
  515.             }

  516.         }
  517.         return false;
  518.     }

  519.     static boolean gailv(int baifenbi){
  520.         baifenbi=baifenbi*5;
  521.         if(360==baifenbi){
  522.             return  true;
  523.         }
  524.         if(0==baifenbi)
  525.             return false;
  526.         for(int i=0;i<baifenbi;i++){
  527.             int jishu= L.randomNumber(1,360);
  528.             if(jishu==1)
  529.                 return true;
  530.         }
  531.         return false;
  532.     }


  533. }
复制代码

















回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



手机版|泛目录站群

GMT+8, 2024-5-3 19:49 , Processed in 0.147464 second(s), 21 queries .

Powered by 泛站群 X3.5

© 2001-2028 黑侠泛站群官方网站

快速回复 返回顶部 返回列表