最近一直帮老板写爬虫,写累了就寻思着找点乐子,碰巧平时喜欢逛豆瓣,就打算写一个自动回帖机器人,废话不多说我们进入正题:

主要用到2个开源工具:Jsoup和httpclient

Step 1:模拟登陆

public static boolean login() throws IOException{String captcha_id=downloadPic(login_url,"D:\\yz.png");//下载验证码图片到本地BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("请输入验证码:");String yan = br.readLine();HttpPost httppost = new HttpPost(login_url); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("captcha-id", captcha_id));//用firebug自己找 params.add(new BasicNameValuePair("captcha-solution", yan));//验证码 params.add(new BasicNameValuePair("form_email", form_email));//用户名 params.add(new BasicNameValuePair("form_password", form_password));//密码 params.add(new BasicNameValuePair("redir", redir));//跳转地址,一般是自己主页 params.add(new BasicNameValuePair("source", "main")); params.add(new BasicNameValuePair("login", "登录")); httppost.setEntity(new UrlEncodedFormEntity(params)); CloseableHttpResponse response = httpclient.execute(httppost);//执行这个post int statuts_code=response.getStatusLine().getStatusCode();//获得服务器返回状态码 if(statuts_code!=302){ System.err.println("登录失败~"); return false; } else{ System.err.println("登录成功~"); } httppost.releaseConnection(); return true; }

Step 2:利用火狐浏览器的firebug插件查看发帖时post哪些参数给服务器

一般是这4个参数:ck、rv_comment、start、submit_btn

发帖代码如下:

  public static boolean startPost(String url) {//参数url即为帖子地址try{String html=getPageHtml(url);Pattern p=Pattern.compile("呃...你想要的东西不在这儿");Matcher m=p.matcher(html);if(m.find()){ return false; } Pattern p3=Pattern.compile("该话题已被小组管理员设为不允许回应"); Matcher m3=p3.matcher(html); if(m3.find()){ return false; } Pattern p2=Pattern.compile("请输入上图中的单词"); Matcher m2=p2.matcher(html); if(m2.find()){ System.out.println("要输验证码了~暂停10分钟"); Thread.sleep(600000); return false; } HttpPost httppost = new HttpPost(url+"add_comment#last"); httppost.addHeader("Connection", "keep-alive"); List<NameValuePair> params2 = new ArrayList<NameValuePair>(); params2.add(new BasicNameValuePair("ck", "xNxg"));//这个参数很重要一定要自己用firebug查看,否则发不了贴 params2.add(new BasicNameValuePair("rv_comment","你的评论内容"));// params2.add(new BasicNameValuePair("start", "0")); params2.add(new BasicNameValuePair("submit_btn", "加上去")); httppost.setEntity(new UrlEncodedFormEntity(params2,"utf-8")); CloseableHttpResponse response = httpclient.execute(httppost); int status_code=response.getStatusLine().getStatusCode(); if(status_code==302){ System.out.println("评论成功~ "+url);//评论成功  } else{ System.out.println("评论失败~ "+url);//评论失败 } httppost.releaseConnection(); Thread.sleep(1500); }catch(Exception e){ return false; } return true; }

完整代码请查看我的GitHub:   https://github.com/wqpod2g/Douban

感谢这篇帖子的作者:http://www.cnblogs.com/lzzgym/p/3322685.html

转载于:https://www.cnblogs.com/mrpod2g/p/4176307.html

java实现豆瓣回帖机器人相关推荐

  1. Autojs豆瓣小组自动回帖机器人,模拟器可用

    - [电脑端] 豆瓣自动顶贴 下载:http://xfxuezhang.cn/WEB/SHARE/ => [电脑版]豆瓣自动顶贴 - [安卓端] 豆瓣自动顶贴 下载:http://xfxuezh ...

  2. 智能对话 | 使用 Java实现 智能对话机器人

    人工智能 目前人工智能与深度学习顺应了互联网时代潮流,人机对话已经成为目前人工智能领域中非常热门的处理技术.其中基于深度学习的人机对话交换系统(智能机器人)是人工智能最有潜力的领域,甚至被称作人工智能 ...

  3. QQRobot一款基于Java的娱乐qq机器人

    QQRobot一款基于Java的娱乐qq机器人 git地址:https://gitee.com/tysong1/QQRobot/tree/master AD:上QQ群214580864购买服务器享优惠 ...

  4. 可以给我写一个java语音外呼机器人代码吗

    当然可以!这是一个简单的Java语音外呼机器人代码,你可以根据需要进行修改和完善: import java.util.Scanner;public class CallBot {public stat ...

  5. 微信公众号后台java开发实现自动回复机器人

    1.注册微信公众号.(简单) 2.注册图灵机器人.(自己百度) 1)注册后可以拿到key  (注意  api接入里的钥匙不要打开,否则要加解密,麻烦) 3.配置微信公众号服务器验证. 1)在开发的基本 ...

  6. 如何用Java实现智能对话机器人

    如何用Java实现智能对话机器人 前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api ...

  7. java使用钉钉机器人应用向单人推送钉钉消息

    java使用钉钉机器人应用推送钉钉消息工具类 首先在pom.xml文件中添加依赖,也可以到钉钉官网下载 <!-- 2021-10-19 钉钉对接机器人 --><dependency& ...

  8. java 实现钉钉机器人单人私聊推送钉钉消息(invalidParameter.robotCode.notExsit机器人不存在)

    文章目录 1.创建机器人应用 2.开通机器人接口权限 3.一定要发布(否则无法调试调接口) 4.编写工具类 5.效果 常见问题异常:"code":"invalidPara ...

  9. java对接企业微信机器人发送消息

    [Java]企业微信机器人自动发送群消息 先在群里添加机器人,然后获取机器人的webhook地址: 假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/web ...

最新文章

  1. 独家 | 虚假疫苗网站如何获取你的个人信息
  2. 我们工作到底为了什么(坚持全篇看完你将受益匪浅)(转)
  3. 皮一皮:程序员为什么只能吃青春饭?
  4. 【BZOJ3676】 [Apio2014]回文串(SAM,manacher)
  5. mysql dump hbase_mysqldump导出全数据库
  6. python中的库及module的 路径
  7. 使用Bootstrap开发网站首页
  8. 关于web服务器性能书籍,图书商城系统的Web服务器性能优化研究与实现
  9. qt设置 阿里巴巴普惠体 英文_怎样把免费的阿里巴巴普惠字体设置为Office全家桶软件主题字体?...
  10. STM32 ESP8266和Java服务器透传模式下的双向通信
  11. 记录——《C Primer Plus (第五版)》第十一章编程练习第四题
  12. Baidu - Echarts 地图实例测试,并绘制平滑圆弧路径
  13. redis类型 tp5_tp5配置使用redis笔记!
  14. Nero8刻录引导系统光盘镜像图文教程
  15. Vuepress2.X从0-1保姆级入门教程
  16. 笔记本电脑秒便WIFI热点
  17. 【nginx】nginx读书笔记
  18. 2021年焊工(初级)考试资料及焊工(初级)新版试题
  19. 鸿蒙当中使用WebView报空指针的问题
  20. 鸿蒙系统怎么打开纯净模式,#手机[超话]##2021有点东西##OPP... - @安诺颜_ 的微博精选 - 微博国际站...

热门文章

  1. jmeter持续时间循环控制器_不写代码实现条件循环?只用Jmeter就能实现
  2. android handler的机制和原理_Android 插件化原理——Hook机制之AMSamp;PMS解析
  3. php中global什么意思,php中global和$GLOBALS[]的用法、解释、区别
  4. win10语音语言服务器,win10系统:朗读女语音库(发音人)安装方法说明
  5. python中的条件判断稀硫酸_大学mooc2020用Python玩转数据期末考试查题公众号答案...
  6. mysql join 循环_MySQL的JOIN(三):JOIN优化实践之内循环的次数
  7. vue 子页面调用父页面的参数_Flutter子组件调用父组件方法修改父组件参数
  8. webpack静态资源地址注入html,Webpack4+ 多入口程序构建
  9. C语言常用8种排序方法耗时测试
  10. Tensorflow-pb保存与导入