看过《被偷无奈写个收菜外挂》 http://www.iteye.com/topic/692028

建议大家不要偷菜,因为偷菜如果遇到有狗的、有蜜蜂的将会失掉非常多的金币,本人以前的程序就有此功能,后来给删除了,

先交上java程序,供大家享用,

程序中添加了验证码功能,每隔5分钟收割一次。

MainFrame.java

/* * To change this template, choose Tools | Templates * and open the template in the editor. */

/* * MainFrame.java * * Created on Oct 10, 2011, 12:22:32 PM */package com.myproj.renren3g_threads_2;

import java.awt.Image;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Date;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import javax.imageio.ImageIO;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JRadioButton;

/** * * @author User */public class MainFrame extends java.awt.Frame implements Runnable {

    private User currentUser;    private boolean verifyCodeFlag;    private String verifyCode;    private Renren3G_Farm renren;    private ByteArrayOutputStream bais;    private Thread thread;    private int actionCounter;    private boolean pauseFlag;

    /** Creates new form MainFrame */    public MainFrame() {    }

    public void init() {        initComponents();

        currentUser = new User();

        renren = new Renren3G_Farm();        renren.setTextArea(outputTextArea);

        //        actionCounter = 0;        counterField.setText("" + actionCounter);

        pauseFlag = false;        pauseButton.setSelected(pauseFlag);

        // redraw layout        gifPanel.setVisible(false);        validate();        repaint();    }

    /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    // <editor-fold defaultstate="collapsed" desc="Generated Code">                              private void initComponents() {

        basePanel = new javax.swing.JPanel();        usersPanel = new javax.swing.JPanel();        jSeparator1 = new javax.swing.JSeparator();        loginPanel = new javax.swing.JPanel();        userPanel = new javax.swing.JPanel();        jLabel1 = new javax.swing.JLabel();        usernameTextField = new javax.swing.JTextField();        passwordPanel = new javax.swing.JPanel();        jLabel2 = new javax.swing.JLabel();        passwordTextField = new javax.swing.JTextField();        gifPanel = new javax.swing.JPanel();        jPanel2 = new javax.swing.JPanel();        imgPanel = new javax.swing.JPanel();        refreshImgButton = new javax.swing.JButton();        jSeparator3 = new javax.swing.JSeparator();        dbImgPanel = new javax.swing.JPanel();        jLabel4 = new javax.swing.JLabel();        dbImgTextField = new javax.swing.JTextField();        jLabel5 = new javax.swing.JLabel();        dbCodeTextField = new javax.swing.JTextField();        jPanel3 = new javax.swing.JPanel();        jLabel3 = new javax.swing.JLabel();        verifyTextField = new javax.swing.JTextField();        dbUpdateButton = new javax.swing.JButton();        jPanel1 = new javax.swing.JPanel();        loginButton = new javax.swing.JButton();        jPanel4 = new javax.swing.JPanel();        jLabel6 = new javax.swing.JLabel();        counterField = new javax.swing.JTextField();        pauseButton = new javax.swing.JToggleButton();        jSeparator2 = new javax.swing.JSeparator();        textPanel = new javax.swing.JPanel();        textScrollPane = new javax.swing.JScrollPane();        outputTextArea = new javax.swing.JTextArea();        exitButton = new javax.swing.JButton();

        setMinimumSize(new java.awt.Dimension(500, 600));        addWindowListener(new java.awt.event.WindowAdapter() {            public void windowClosing(java.awt.event.WindowEvent evt) {                exitForm(evt);            }        });

        basePanel.setLayout(new javax.swing.BoxLayout(basePanel, javax.swing.BoxLayout.Y_AXIS));

        usersPanel.setLayout(new javax.swing.BoxLayout(usersPanel, javax.swing.BoxLayout.Y_AXIS));        basePanel.add(usersPanel);        basePanel.add(jSeparator1);

        loginPanel.setLayout(new javax.swing.BoxLayout(loginPanel, javax.swing.BoxLayout.Y_AXIS));

        userPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        jLabel1.setText("Username");        userPanel.add(jLabel1);

        usernameTextField.setColumns(25);        usernameTextField.setMinimumSize(new java.awt.Dimension(6, 200));        usernameTextField.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                usernameTextFieldActionPerformed(evt);            }        });        userPanel.add(usernameTextField);

        loginPanel.add(userPanel);

        passwordPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        jLabel2.setText("Password");        passwordPanel.add(jLabel2);

        passwordTextField.setColumns(25);        passwordTextField.setMinimumSize(new java.awt.Dimension(6, 200));        passwordPanel.add(passwordTextField);

        loginPanel.add(passwordPanel);

        gifPanel.setLayout(new javax.swing.BoxLayout(gifPanel, javax.swing.BoxLayout.Y_AXIS));

        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));        jPanel2.add(imgPanel);

        refreshImgButton.setText("Refresh");        refreshImgButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                refreshImgButtonActionPerformed(evt);            }        });        jPanel2.add(refreshImgButton);

        jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL);        jPanel2.add(jSeparator3);        jPanel2.add(dbImgPanel);

        jLabel4.setText("Size");        jPanel2.add(jLabel4);

        dbImgTextField.setColumns(6);        dbImgTextField.setEditable(false);        jPanel2.add(dbImgTextField);

        jLabel5.setText("Verify Code");        jPanel2.add(jLabel5);

        dbCodeTextField.setColumns(6);        dbCodeTextField.setEditable(false);        jPanel2.add(dbCodeTextField);

        gifPanel.add(jPanel2);

        jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        jLabel3.setText("Input Verify Code:");        jPanel3.add(jLabel3);

        verifyTextField.setColumns(6);        jPanel3.add(verifyTextField);

        dbUpdateButton.setText("Update database");        dbUpdateButton.setEnabled(false);        dbUpdateButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                dbUpdateButtonActionPerformed(evt);            }        });        jPanel3.add(dbUpdateButton);

        gifPanel.add(jPanel3);

        loginPanel.add(gifPanel);

        jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        loginButton.setText("Login");        loginButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                loginButtonActionPerformed(evt);            }        });        jPanel1.add(loginButton);

        jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.TRAILING));

        jLabel6.setText("Action Count:");        jPanel4.add(jLabel6);

        jPanel1.add(jPanel4);

        counterField.setColumns(5);        counterField.setText("jTextField1");        counterField.setEnabled(false);        jPanel1.add(counterField);

        pauseButton.setText("Pause");        pauseButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                pauseButtonActionPerformed(evt);            }        });        jPanel1.add(pauseButton);

        loginPanel.add(jPanel1);

        basePanel.add(loginPanel);        basePanel.add(jSeparator2);

        textPanel.setLayout(new java.awt.BorderLayout());

        outputTextArea.setColumns(20);        outputTextArea.setRows(5);        textScrollPane.setViewportView(outputTextArea);

        textPanel.add(textScrollPane, java.awt.BorderLayout.CENTER);

        basePanel.add(textPanel);

        add(basePanel, java.awt.BorderLayout.CENTER);

        exitButton.setText("Exit");        exitButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                exitButtonActionPerformed(evt);            }        });        add(exitButton, java.awt.BorderLayout.SOUTH);

        pack();    }// </editor-fold>                        

    /** Exit the Application */    private void exitForm(java.awt.event.WindowEvent evt) {                                  System.exit(0);    }                         

    private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                   System.exit(0);    }                                          

    private void usernameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {                                                          // TODO add your handling code here:    }                                                 

    private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            

        // update user info.        currentUser.setUsername(usernameTextField.getText());        currentUser.setPassword(passwordTextField.getText());

        // clear output        outputTextArea.setText("---- " + (new Date()).toString() + " ----\n");

        verifyCode = verifyTextField.getText();        //outputTextArea.append("Verify code = '" + verifyCode + "'");        System.out.println("Verify code = '" + verifyCode + "'");

        boolean firstTimeLogon;        if (!verifyCodeFlag) {            // first time, no verify image            firstTimeLogon = renren.logon(currentUser);        } else {            //            firstTimeLogon = renren.logon(currentUser, verifyCode);        }        //System.out.println("first time logon : " + firstTimeLogon);

        if (firstTimeLogon) {            // login success            thread.start();        }

        if (!firstTimeLogon) {            // require verify code            System.out.println("verify image url : " + renren.getVerifyImageUrl());

            // show verify image            try {                bais = renren.getRenrenVerifyImage();                System.out.println("bais.size() = " + bais.size());

                String digest = getDigest_md5(bais);                System.out.println("Digest_md5 = '" + digest + "'");

                Image image = ImageIO.read(new ByteArrayInputStream(bais.toByteArray()));

                imgPanel.removeAll();                JLabel label = new JLabel(new ImageIcon(image));                imgPanel.add(label);

                verifyCodeFlag = true;

                // redraw layout                verifyTextField.setText("");                gifPanel.setVisible(true);                validate();                repaint();            } catch (IOException ex) {                Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);            }        }    }                                           

    private void refreshImgButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                         try {            outputTextArea.setText((new Date()).toString() + " ---- from outputTextArea ----");

            bais = renren.refreshRenrenVerifyImage();            System.out.println("bais.size() = " + bais.size());

            String digest = getDigest_md5(bais);            System.out.println("Digest_md5 = '" + digest + "'");

            Image image = ImageIO.read(new ByteArrayInputStream(bais.toByteArray()));

            imgPanel.removeAll();            JLabel label = new JLabel(new ImageIcon(image));            imgPanel.add(label);

            // redraw layout            validate();            repaint();        } catch (IOException ex) {            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);        }    }                                                

    private void dbUpdateButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                   }                                              

    private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                    pauseFlag = pauseButton.isSelected();    }                                           

    private String getDigest_md5(ByteArrayOutputStream bais) {

        // demo : get md5 digest for String        StringBuilder hexString = new StringBuilder();

        byte[] defaultBytes = bais.toByteArray();        try {            MessageDigest algorithm = MessageDigest.getInstance("MD5");            algorithm.reset();            algorithm.update(defaultBytes);            byte messageDigest[] = algorithm.digest();

            for (int i = 0; i < messageDigest.length; i++) {                hexString.append(Integer.toHexString(0xFF & messageDigest[i]));            }            //String foo = messageDigest.toString();            //System.out.println("sessionid " + sessionid + " md5 version is " + hexString.toString());        } catch (NoSuchAlgorithmException nsae) {        }

        return hexString.toString();    }

    /**     * @param args the command line arguments     */    public static void main(String args[]) {//        java.awt.EventQueue.invokeLater(new Runnable() {////            public void run() {//                new MainFrame().setVisible(true);//            }//        });        MainFrame frame = new MainFrame();        Thread renrenThread = new Thread(frame);        frame.setThread(renrenThread);        frame.setVisible(true);        frame.init();    }    // Variables declaration - do not modify                         private javax.swing.JPanel basePanel;    private javax.swing.JTextField counterField;    private javax.swing.JTextField dbCodeTextField;    private javax.swing.JPanel dbImgPanel;    private javax.swing.JTextField dbImgTextField;    private javax.swing.JButton dbUpdateButton;    private javax.swing.JButton exitButton;    private javax.swing.JPanel gifPanel;    private javax.swing.JPanel imgPanel;    private javax.swing.JLabel jLabel1;    private javax.swing.JLabel jLabel2;    private javax.swing.JLabel jLabel3;    private javax.swing.JLabel jLabel4;    private javax.swing.JLabel jLabel5;    private javax.swing.JLabel jLabel6;    private javax.swing.JPanel jPanel1;    private javax.swing.JPanel jPanel2;    private javax.swing.JPanel jPanel3;    private javax.swing.JPanel jPanel4;    private javax.swing.JSeparator jSeparator1;    private javax.swing.JSeparator jSeparator2;    private javax.swing.JSeparator jSeparator3;    private javax.swing.JButton loginButton;    private javax.swing.JPanel loginPanel;    private javax.swing.JTextArea outputTextArea;    private javax.swing.JPanel passwordPanel;    private javax.swing.JTextField passwordTextField;    private javax.swing.JToggleButton pauseButton;    private javax.swing.JButton refreshImgButton;    private javax.swing.JPanel textPanel;    private javax.swing.JScrollPane textScrollPane;    private javax.swing.JPanel userPanel;    private javax.swing.JTextField usernameTextField;    private javax.swing.JPanel usersPanel;    private javax.swing.JTextField verifyTextField;    // End of variables declaration                   

    public void run() {        while (true) {            if (!pauseFlag) {                Date date = new Date();                //System.out.println(date);                outputTextArea.append("" + date + "\n");                outputTextArea.scrollRectToVisible(new Rectangle(0, outputTextArea.getHeight() - 2, 1, 1));

                renren.getFarmURLs();                renren.showStatus0();                renren.processFarm();

                // loss money                //List<String> friends = renren.getFriendsURL();                //for (int index = 0; index < friends.size(); index++) {                //    renren.processFriend(friends.get(index));                //}                renren.showStatus1();

                outputTextArea.append("\n");                outputTextArea.append("Wait for 5 minutes...\n");                outputTextArea.append("\n");                outputTextArea.scrollRectToVisible(new Rectangle(0, outputTextArea.getHeight() + 80, 1, 1));

                actionCounter++;                counterField.setText("" + actionCounter);            }

            try {                Thread.sleep(5 * 60 * 1000); // wait 5 minutes            } catch (InterruptedException ex) {                Logger.getLogger(Renren3G_Farm.class.getName()).log(Level.SEVERE, null, ex);            }        }    }

    private void setThread(Thread thread) {        this.thread = thread;    }}

人人农场 renren 外挂 Java 实现相关推荐

  1. 改进我的人人农场收菜外挂

    之前在论坛里发了我的收菜外挂代码(详见文章<被偷无奈写个收菜外挂>),嘿嘿,关注的人还真多,还上了首页! 这两天把代码改进了一下,调整了一下结构,设计得更OO了.另外主要的变化是增加了自动 ...

  2. 人人农场机器人v3.0测试版 正式发布

    爱农场爱劳动..经过五一假期的一番努力..人人农场机器人的第一个公开测试版终于完工了~ 本软件的主要目的是要帮助人减轻在农场收获与播种的反复劳动..主要实现的功能如下: 1.按作物的成熟时间定时收取. ...

  3. qq农场js外挂详细制作(转帖)

    qq农场js外挂详细制作(提供源码.有注释.有抓包数据分析.不再更新 http://blog.csdn.net/lin379184514/archive/2009/12/10/4979622.aspx ...

  4. qq农场js外挂详细制作(提供源码、有注释、有抓包数据分析、不再更新、不回答提问)

    (图片不能用另存为下载,用属性查看链接,然后下载) 源代码下载:http://download.csdn.net/source/1889334 以下为html文件代码,即外挂主程序. <scri ...

  5. 和Sun一起开源(武林外传游戏外挂Java源代码) - 论坛版

    以下是我在大三时,武林外传游戏还在公测时写的一个外挂,辅助玩游戏.以前在大学时用着很好用,和大家共享出来.希望有朋友能够进行重构,发布一些更好用的JAVA实现的外挂程序. 由于这是本人的处女做,所以代 ...

  6. 和Sun一起开源(武林外传游戏外挂Java源代码) - 博客版

    以下是我在大三时,武林外传游戏还在公测时写的一个外挂,辅助玩游戏.以前在大学时用着很好用,和大家共享出来.希望有朋友能够进行重构,发布一些更好用的JAVA实现的外挂程序. 由于这是本人的处女做,所以代 ...

  7. 和Sun一起开源(武林外传游戏外挂Java源代码)

    package game; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.e ...

  8. 微信小游戏「跳一跳」外挂(java版)

    image 其实也不能说算是外挂吧,算是个游戏小助手吧,毕竟不能抓包,也不能直接修改分数(据说之前可以直接抓包修改分数,不过这漏洞已经被微信官方修复),今天这个是 Android 同学可以非常容易看懂 ...

  9. Docker部署renren-fast人人开源后台项目

    引言:renren-fast是一个轻量级的,前后端分离的Java快速开发平台,能快速开发项目并交付.由于开源脚手架部署方式各不相同,本文仅仅针对renren-fast开源框架的docker部署. do ...

最新文章

  1. 【数据结构】链表中的 指针,地址
  2. 函数 php_PHP函数缺陷详解
  3. python培训Day1 随笔
  4. Python基础教程(三):运算符、条件语句
  5. 怎么看python环境变量配置是否好了验证图片_简述验证Anaconda是否安装成功的两种方式和Anaconda环境变量配置过程...
  6. webRTC+coturn穿透服务器的安装与搭建
  7. Javascript——DOM编程
  8. pytorch ner
  9. Xen虚拟化平台安装及实时迁移
  10. Android JSON: JSONArray cannot be converted to JSONObject
  11. accept 返回0_Netty深入浅出系列:Netty源码分析之accept过程
  12. Google Guava学习(10)-Guava字符串工具CharMatcher
  13. 【iOS】通过URL Scheme启动app(收集了常用的app的URL Scheme)
  14. Java实现 LeetCode 808 分汤 (暴力模拟)
  15. 第一篇 香橙派刷机和开发环境准备(Armbian版)
  16. 还在用excel做可视化图表?这款数据可视化软件让你事半功倍
  17. Web Components入门实例教程
  18. Kafka 入门 (一)
  19. 类别,非正式协议,正式协议
  20. 前端代码拆分的意义,以及如何拆分代码,文件拆分--前端教学文-f

热门文章

  1. python求和1到100_python等差数列求和公式前 100 项的和实例
  2. html设置打印尺寸,打印尺寸及常用格式尺寸设置 css
  3. 献给java初学者,非常适合新手练习的Java项目
  4. MLE, MAP and LSM
  5. 基于Hexo搭建Next主题博客
  6. 企业级数据中台应用架构和技术架构
  7. sql server获取当前日期
  8. 信号量——计数信号量
  9. 文件内容中显示(SOH、STX、ETX)
  10. 【ElementUI】el-table 的表头和内容列不对齐