故事的背景如下图,李笑来 老师于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. Wireshark使用技巧:提取VOIP通话中的音频流
  2. 两步改动CentOS主机名称
  3. suse linux c 编译环境,SUSE 11中安装GCC开发环境
  4. CSS十问——好奇心+刨根问底=CSSer (转)
  5. 爬虫 spider08——爬取腾讯娱乐新闻【使用redis去重】
  6. Oracle VM Virtual Box的安装
  7. CentOS6.2安装LAMP+DRUPAL网站(1)
  8. redhat enterprise linux5.4.iso,版本有RedHat Enterprise Linux(RHEL)5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载地址...
  9. 几种影响软件可伸缩性的问题
  10. Spring.NET学习笔记18——整合NHibernate(基础篇) Level 300
  11. 华为储存空间管理器可以删除吗_Cx File Explorer 免费清爽无广告的安卓手机文件管理器 (支持局域网共享/FTP/WebDAV)...
  12. vscode+markdown+pandoc写论文
  13. 华安证券手机网上开户流程
  14. 为什么笔记本电脑自动关机_为什么我要放弃笔记本电脑
  15. Linux共享打印机手机打印,[分享]让linux和linux之间共享打印机
  16. vue使用render函数自定义标签动态导入js文件
  17. 模型高性能优化 | 两步数据预处理让Alphafold 提速一倍
  18. Dell 服务器错误代码
  19. 日期/时间格式中的字母及其含义与示例
  20. 我的大学(2001-2005,从文艺青年到2B青年)

热门文章

  1. 故障树分析法MATLAB,基于VC++与MATLAB的故障树分析系统
  2. [精简]托福核心词汇62
  3. 低阶的Newton-Cotes求积公式 | 梯形求积公式、Simpson求积公式、Cotes求积公式
  4. 智能性与实用性兼具,华为开启智能眼镜全民时代
  5. matlab卡住了 打不开,win7系统matlab打不开无法运行的解决方法
  6. Pandas读取excel数据——pearson相关性分析
  7. 助力操作系统国产化:Testin云测试服贸会首发鸿蒙系统测试平台
  8. VScode 亮暗 高对比度 主题推荐
  9. 练习-Java类和对象之包的定义(17)
  10. 计算机电子表格减法公式,excel表格公式怎么操作