故事的背景如下图,李笑来 老师于10月19日在 知乎Live 开设 一小时建立终生受用的阅读操作系统 的讲座,他老人家看到大家伙报名踊跃,便在微博上发起了一个 猜数量赢取iPhone7 的活动。

因为该活动注明了「不限猜的次数」,我便用 JavaScript 写一个自动转发的脚本,用机器代替手工转发,结果转发不到200次就被 李笑来 老师拉黑了,实在扫兴。与其独自郁闷,不如把技术细节分享给大家,祝大家能早日赢得 iPhone7。我的微博地址是:http://weibo.com/stone0090,欢迎大家来围观。

本以为花一两个小时就能搞定这个微博自动转发的脚本,结果中途不停的踩坑折腾了大半天。还好早早的被 李笑来 老师拉黑。不然用 .NET 重写工具,再接入 打码兔,还得再花我好几个小时。好不容易国庆长假休息一下,还不是想给媳妇换个 iPhone7,我就能用她的 iPhone6s,要不然真心不想花太多时间捣鼓这个。废话不多说了,进入正题:

前期准备

JavaScript:如果不会 JavaScript,建议先学完 JavaScript 闯关记,再继续看本文。

Chrome:开发调试 JavaScript 必备神器。

微博会员:据网上流言,普通用户如果转发过多会被封号,而会员则不会。

填坑过程

打开 Chrome 浏览器中,先登录自己的微博,再进入李笑来老师的微博首页 http://weibo.com/bylixiaolai 。

打开 Chrome 开发者工具(Mac 快捷键 option + comand + j,Window 快捷键 ctrl + shift + i),切换 tab 到 NetWork,并点击 clear,清除初始化时所加载的数据。

然后手动转发一次微博,获取到转发时所产生的请求。

利用上图红框中的关键数据,使用 JavaScript 模拟发送转发请求,具体代码如下。

// 转发微博,并评论

function forwardWeibo(content, retcode) {

var formData = new FormData();

formData.append('pic_src', '');

formData.append('pic_id', '');

formData.append('appkey', '');

formData.append('mid', '4024988475919525');

formData.append('style_type', '1');

formData.append('mark', '');

formData.append('reason', content);

formData.append('location', 'page_100505_home');

formData.append('pdetail', '1005051576218000');

formData.append('module', '');

formData.append('page_module_id', '');

formData.append('refer_sort', '');

formData.append('is_comment_base', '1');

formData.append('rank', '0');

formData.append('rankid', '');

formData.append('_t', '0');

formData.append('retcode', retcode || '');

var xhr = new XMLHttpRequest();

xhr.timeout = 3000;

xhr.responseType = "text";

xhr.open('POST', 'http://weibo.com/aj/v6/mblog/forward?ajwvr=6&domain=100505&__rnd=' + new Date().getTime(), true);

xhr.onload = function(e) {

if (this.status == 200 || this.status == 304) {

var data = JSON.parse(this.responseText);

if (data.code == "100000") {

// 转发微博成功

console.log(content);

} else if (data.code == "100027") {

// 转发微博失败,需要回答图片验证码的问题

console.log(data);

} else {

// 转发微博失败,其他原因

console.log(data);

}

}

};

xhr.send(formData);

}

//forwardWeibo('转发内容');

//forwardWeibo('转发内容',verified('答案'));

// 每5秒转发一次

var count = 35000;

setInterval(function(){

forwardWeibo(count++);

}, 5000);

打开 Chrome 开发者工具,切换 tab 到 Console,拷贝上面代码到 Console 中,按回车键即可以「5秒1次」的频率对李笑来老师的这条微博进行转发评论,如需停止请关闭该页面再重新打开。

然而仅过了2分钟,成功转发50多次之后,后面的转发全部失败。经检查发现,由于我转发频率过快,被微博官方暂时封号。回答一些简单的问题把账号解封,我把转发频率由「5秒1次」改为「10秒1次」,因为除我之外还有其他几个号也在用脚本刷,他们大概用「10秒1次」的频率,稳定的转发没有间断过,所以「10秒1次」应该是相对安全的。

我调整频率之后重新开始转发,但还是转发失败,手动操作后发现转发需要输入验证码,以前并没有这个环节,看来刚才的封号是有一些后遗症的。验证码我才不怕,专业的打码服务 打码兔 连12306的验证码都能轻松应付,识别这里的验证码就是小儿科。但接入 打码兔 的工作量有点大,我还是先找找看,有没有更简单的方法。

果然还真被我找到了,虽然转发的时候需要输入验证码,但评论的时候并不用,手动操作一把,评论并转发也能成功,便马上新增了一个评论的方法,具体代码如下。

// 评论微博,并转发

function commentWeibo(content) {

var formData = new FormData();

formData.append('act', 'post');

formData.append('mid', '4024988475919525');

formData.append('uid', '1760390531');

formData.append('forward', '1');

formData.append('isroot', '0');

formData.append('content', content);

formData.append('location', 'page_100505_home');

formData.append('module', 'scommlist');

formData.append('group_source', '');

formData.append('tranandcomm', '1');

formData.append('pdetail', '1005051576218000');

formData.append('_t', '0');

var xhr = new XMLHttpRequest();

xhr.timeout = 3000;

xhr.responseType = "text";

xhr.open('POST', 'http://weibo.com/aj/v6/comment/add?ajwvr=6&__rnd=' + new Date().getTime(), true);

xhr.onload = function(e) {

if (this.status == 200 || this.status == 304) {

if (this.responseText.code == "100000") {

console.log(content);

} else {

console.log(this.responseText)

}

}

};

xhr.send(formData);

}

//commentWeibo('评论内容');

// 每10秒评论一次

var count = 35000;

setInterval(function(){

forwardWeibo(count++);

}, 10000);

没高兴几分钟,又发现新的问题,评论成功10条,只有1条转发成功了,这完全是坑爹啊。看来只有接入 打码兔 才能彻底解决问题了,估计要花2、3个小时才能搞定,算了,先吃饭、洗澡再弄。

磨蹭了1、2个小时之后回来,发现微博转发输入验证码的限制已经被取消,但我仍心有余悸,把脚本的频率改为「30秒1次」让它慢慢的跑。然后,埋头研究 打码兔 的 API,注册相关开发者账号,充值测试费用。就在我刚准备写代码之际,脚本又失败了,而且,这次的报错跟以前都不一样,原来是我已经被 李笑来老师拉黑了,再也不能转发评论他老人家任何微博了。

本以为会刷几万条微博出来,没想到只刷了200条不到,这些微博就留作纪念不删了。下面是提前准备好的批量删微博的脚本。

//删除微博

function deleteWeibo() {

var items = document.querySelectorAll(".WB_feed_type");

for(var i in items){

if(items[i].getAttribute){

var formData = new FormData();

formData.append('mid', items[i].getAttribute("mid"));

var xhr = new XMLHttpRequest();

xhr.open('POST', 'http://weibo.com/aj/mblog/del?ajwvr=6', false);

xhr.send(formData);

console.log(xhr.responseText);

}

}

}

deleteWeibo();

信念瞬间崩塌,思想得到解放,果断去抱着媳妇追 权利的游戏,啪啪啪,真是一个美好夜晚。

最后,祝大家国庆节快乐。如果还想听我聊技术(che dan),请关注微信公众号「劼哥舍」,老斯基带你飙车。

java微博自动转发_被「李笑来老师」拉黑之「JavaScript微博自动转发的脚本」相关推荐

  1. 被「李笑来老师」拉黑之「JavaScript微博自动转发的脚本」

    故事的背景如下图,李笑来 老师于10月19日在 知乎Live 开设 一小时建立终生受用的阅读操作系统 的讲座,他老人家看到大家伙报名踊跃,便在微博上发起了一个 猜数量赢取iPhone7 的活动. 因为 ...

  2. 李笑来 css,李笑来老师的CSS

    李笑来老师的CSS .markdown-here-wrapper { font-size: 16px; line-height: 1.8em; letter-spacing: 0.1em; } pre ...

  3. 区块链三加一:致李笑来老师的一封感谢信!

    今天是9月10日,教师节.尊师重教是中国的传统,在这一年一度的日子里,我想真诚对李笑来说一声感谢!谢谢你让我看到这个圈子套路有多深.都说打不死的都只能让你更强大,而我从一个幻想通过自己认知跨越阶级的人 ...

  4. 你知道“拉黑”、“关注”、“点赞”、“转发”、“分享到朋友圈”等英语咋说吗?

    From: https://www.sohu.com/a/220161051_559507 "分享到朋友圈"等英语咋说吗? Mini apps 小程序 小程序"(mini ...

  5. java离职证明模板_离职证明的一个小细节,差点让我「背调」over

    终于拿下了鹅厂的offer. 久战职场,深知诚信的重要性,不管是简历还是面试表述,都不敢有任何的弄虚作假,在等待背调结果的几天里,虽然有一些莫名的小紧张,整体上也是满满的坦荡自信:随便调查吧,我没什么 ...

  6. pc双网卡实现路由转发_路由器配置骨干网设备MPLS本地会话功能实现数据在MPLS网络中转发...

    一.组网需求: 如图所示,LSRA.LSRB.LSRC是MPLS网络的核心设备.数据流量从PE设备进入MPLS网络.要实现数据流在MPLS域内的转发,则需要在LSRA.LSRB.LSRC之间配置LDP ...

  7. mfc gridctrl 设置某列自动伸长_三明桥梁智能张拉设备数控智能张拉系统全自动智能张拉系统...

    HMZN系列 预应力智能张拉系统 使用说明书 概述 预应力智能张拉控制系统用于桥梁预应力张拉的自动控制,采用触摸屏和高性能逻辑控制器,通过比例阀控制2缸或4缸同步张拉,通过无线网络可远程监控张拉过程. ...

  8. java三元表达式嵌套_三元运算符的嵌套详解:分别在JSTL、JavaScript和Java中

    用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行. 使用格式: (条件表达式)?表达式1:表达式2: 运算规则:条件表达式  值为一个布尔值,当值为true的时候 执行表达式1   否 ...

  9. 精通java的拼写段子_[慎入]已经笑晕!只有程序员才懂的10个段子-Go语言中文社区...

    (1)有两个程序员:一个技术很牛.BUG很少,另一个技术很菜,BUG很多.那个很菜的程序员,经常被测试妹子叫去,接受批评教育. 后来,很菜的程序员跟测试的妹子擦出了火花,走到了一起. 技术很牛的程序员 ...

  10. iOS微博项目(五)- 实现超链接和时间,下拉,未读数,微博正文,评论

    1. 正则表达式的使用 2. 实现超链接和时间,来源 3 下拉 1)baseTableView,用于下拉等 2)weiboTableView 多个地方都可以用到这个list 3)重构微博列表 4)下拉 ...

最新文章

  1. Git_Eclipse:[7]Git解决冲突
  2. caffe源码分析:blob.hpp分析
  3. 使用JDBC驱动程序访问SQL Server 2000数据库(实例)
  4. 宁波华为服务器项目招聘,宁波服务器
  5. python编写时钟代码_python Tkinter 编写时钟
  6. no such file or directory什么意思_为什么这次 MySQL 崩溃恢复要这么久-爱可生
  7. 摆脱IDE进行时. . .
  8. 如何批量修改文件后缀
  9. python 时间模块判断上午还是下午_Python的时间模块小结(转自:不懂真人)
  10. 音视频编解码基础知识
  11. 未来无生经超级计算机,第三十二章 有些鸡肋的未来无生经
  12. combo 技术简单介绍
  13. echarts 横向条形图 对比
  14. Maven项目进行打包出现 The POM for xxxx is missing, no dependency information available
  15. java.util工具类之Currency类
  16. 网络安全技术及应用第3版 主编贾铁军等——教材习题 期末重点 复习题 知识提炼(第1章 网络安全基础)
  17. tp5.1 乐视云上传视频文件(https请求http乐视云上传接口)http网址下上传视频(https API接口)
  18. 360软件管家下载|360软件管家电脑版下载
  19. 【干货】认知智能时代:知识图谱实践案例集.pdf(附下载链接)
  20. hp电脑 linux 出错,HP笔记本AMT报错修复

热门文章

  1. Gitlab CI/CD 简单介绍
  2. 模拟卷Leetcode【普通】015. 三数之和
  3. HTTP 状态码502 深度解析
  4. 可执行bin文件的制作
  5. java网页开发中的乱码问题解决(过滤器)
  6. 【1194】移动路线
  7. flash spi 野火_野火stm32-SPI
  8. 在Mac里读取NTFS格式的盘
  9. WPS文字目录怎么做?目录制作的三种方法
  10. 第四篇Scrum冲刺博客