插件编程基础知识可参考文章《【自动化】初见 - 最强浏览器开发插件 油猴Tampermonkey
https://blog.csdn.net/kinghzking/article/details/128272180
》
公众号可以发布今天和明天的内容,为了区分该操作,通过
小键盘按键
的1和2进行区分。
function
main
(
day
)
{
var
timer_id
=
setInterval
(
function
(
)
{
fabu
(
day
,
timer_id
)
;
}
,
1234
)
;
document
.
body
.
onkeyup
=
function
(
e
)
{
e
=
e
||
window
.
event
;
var
s
=
e
.
type
+
" "
+
e
.
keyCode
;
console
.
log
(
s
,
e
)
;
switch
(
e
.
keyCode
)
{
case
0x61
:
console
.
log
(
'发布今天的'
)
main
(
1
)
break
;
case
0x62
:
console
.
log
(
'发布明天的'
)
main
(
2
)
break
;
return
false
设置时间,不能直接对元素进行赋值,这里采用了模拟点击的方式,代码如下:
function
fabu_setting_qunfa
(
jintian_mingtian
,
send__timer
,
hour
,
minute
)
{
var
dropbox_jintian_mingtian
=
$
(
'.weui-desktop-form__dropdown__value'
)
;
if
(
dropbox_jintian_mingtian
.
length
<
2
)
{
return
false
;
if
(
dropbox_jintian_mingtian
[
0
]
.
innerText
!=
jintian_mingtian
)
{
return
false
;
var
send__timer__input
=
$
(
'div.mass-send__timer input'
)
if
(
send__timer__input
.
length
<
2
)
{
return
false
;
if
(
$
(
'.weui-desktop-picker__dd__time.weui-desktop-picker__dd'
)
.
is
(
":visible"
)
==
false
)
{
$
(
'.weui-desktop-icon__time:visible'
)
.
click
(
)
;
return
false
;
var
eles_h
=
$
(
'div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child('
+
(
hour
+
1
)
+
').weui-desktop-picker__selected:visible'
)
;
var
eles_m
=
$
(
'div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child('
+
(
minute
+
1
)
+
').weui-desktop-picker__selected:visible'
)
;
if
(
eles_h
.
length
==
0
||
eles_m
.
length
==
0
)
{
var
eles_h
=
$
(
'div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child('
+
(
hour
+
1
)
+
'):visible'
)
;
var
eles_m
=
$
(
'div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child('
+
(
minute
+
1
)
+
'):visible'
)
;
eles_h
[
0
]
.
click
(
)
;
eles_m
[
0
]
.
click
(
)
;
return
false
;
return
true
;
fabu_setting_qunfa
(
'今天'
,
'11:55'
,
11
,
55
)
;
其他逻辑都比较简单,通过定时器,不断检测当前状态,然后进行模拟点击完成相关操作。
(function() {
'use strict';
function getticket() {
Log.info('获取群发ticket');
return WechatRequest({
url: `${Config.api.safeassistant}?1=1&token=${getUrlParam('token')}`,
form: {
token: getUrlParam('token'),
f: 'json',
ajax: 1,
random: Math.random(),
action: 'get_ticket',
}).then((body) => {
console.log(body)
if (body.base_resp.ret === 0) {
Log.info('群发ticket获取成功');
return {
ticket: body.ticket,
operation_seq: body.operation_seq,
} else {
Log.info('群发ticket获取失败');
throw body;
});
function fabu_setting_set_mingtian() {
var _dropbox_jintian_mingtian = $('div.mass-send__timer > div > dl > div:nth-child(2) > ul > li.weui-desktop-dropdown__list-ele');
if (_dropbox_jintian_mingtian.length >= 2) {
_dropbox_jintian_mingtian[1].click()
function fabu_setting_qunfa(jintian_mingtian, send__timer, hour, minute) {
var dropbox_jintian_mingtian = $('.weui-desktop-form__dropdown__value');
if (dropbox_jintian_mingtian.length < 2) {
return false;
if (dropbox_jintian_mingtian[0].innerText != jintian_mingtian) {
return false;
var send__timer__input = $('div.mass-send__timer input')
if (send__timer__input.length < 2) {
return false;
if($('.weui-desktop-picker__dd__time.weui-desktop-picker__dd').is(":visible") == false) {
$('.weui-desktop-icon__time:visible').click();
return false;
var eles_h = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child(' + (hour+1) + ').weui-desktop-picker__selected:visible');
var eles_m = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child(' + (minute+1) + ').weui-desktop-picker__selected:visible');
if (eles_h.length == 0 || eles_m.length == 0) {
var eles_h = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child(' + (hour+1) + '):visible');
var eles_m = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child(' + (minute+1) + '):visible');
eles_h[0].click();
eles_m[0].click();
return false;
return true;
function fabu_setting(day) {
var eles = $('.mass-send__form input.weui-desktop-switch__input');
if (eles.length) {
if (eles[0].checked == false) {
eles[0].click()
return
var dingshi_qunfa = $('.weui-desktop-form__control-group .weui-desktop-switch__box');
if (dingshi_qunfa.length) {
var dropbox_jintian_mingtian = $('.weui-desktop-form__dropdown__value');
if
(dropbox_jintian_mingtian.length < 2) {
dingshi_qunfa[0].click();
return false;
var mass_send__footer = $('.mass-send__footer');
if (mass_send__footer.length == 0) {
return
var mass_send__footer_txt = mass_send__footer[0].innerText;
console.log(">>> mass_send__footer_txt = ", mass_send__footer_txt);
if (day == 1) {
if (mass_send__footer_txt.search('今天还可以群发1次') == -1) {
alert('今天还可以群发0次!!! ' + mass_send__footer_txt)
return false;
let d = new Date();
if (d.getHours() < 11) {
return fabu_setting_qunfa('今天', '11:55', 11, 55);
} else if (d.getHours() < 18) {
return fabu_setting_qunfa('今天', '18:18', 18, 18);
} else {
return true;
else if (day == 2) {
if (mass_send__footer_txt.search('今天还可以群发') != -1) {
fabu_setting_set_mingtian();
return false;
} else if (mass_send__footer_txt.search('明天还可以群发0次') != -1) {
alert('明天还可以群发0次!!! ' + mass_send__footer_txt)
} else if (mass_send__footer_txt.search('明天还可以群发1次') != -1) {
console.log(">>> 明天还可以群发1次");
return fabu_setting_qunfa('明天', '11:58', 11, 58);
} else {
alert('未知内容:' + mass_send__footer_txt)
return false;
function getContinueSend() {
var ret = null;
var btns = $('.weui-desktop-dialog__ft button');
for (var i = 0; i < btns.length; ++i) {
var btn = btns[i];
console.log(btn)
function fabu(day, timer_id) {
var js_auto_insert_ad = $('.js_auto_insert_ad')
if (js_auto_insert_ad.length == 0) {
alert('【失败】 取消选中《文中广告智能插入》');
clearInterval(timer_id);
return;
} else {
if (js_auto_insert_ad[0].checked) {
js_auto_insert_ad[0].click();
var mass_send__footer = $('.mass-send__footer');
var jixu_qunfa = $('div > div:nth-child(2) > div.weui-desktop-dialog__wrp > div > div.weui-desktop-dialog__ft > div > div:nth-child(1) > button');
var wechat_yanzheng = $('body > div.dialog_wrp.ui-draggable > div > div.dialog_hd > h3');
if (wechat_yanzheng.length && $(wechat_yanzheng[0]).is(":visible")) {
console.log(">>> 微信验证");
clearInterval(timer_id);
throw(-1);
else if (jixu_qunfa.length && $(jixu_qunfa[0]).is(":visible")) {
console.log(">>> 继续群发");
jixu_qunfa.click()
clearInterval(timer_id);
else if (mass_send__footer.length && $(mass_send__footer).is(":visible")) {
console.log(">>> 设置页面");
if (fabu_setting(day)) {
var btn_qunfa = $('div.weui-desktop-dialog__ft > div > div.weui-desktop-popover__wrp > div > button');
btn_qunfa.click();
else {
console.log(">>> 保存并群发");
$('#js_send').click()
function main(day) {
var timer_id = setInterval(function() {
fabu(day, timer_id);
}, 1234);
document.body.onkeyup = function (e) {
e = e || window.event;
var s = e.type + " " + e.keyCode;
console.log(s, e);
switch(e.keyCode){
case 0x61 :
console.log('发布今天的')
main(1)
break;
case 0x62 :
console.log('发布明天的')
main(2)
break;
return false
})();
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。
AppiumWeChatAuto
1、如果要实现微信公众号文章的自动采集就必须实现微信公众号文章的自动浏览操作;
2、此工程是基于Appium和Java来实现的Android微信客户端自动化浏览的操作,基于微信6.6.7版本,版本的历史文章列表页面入口都是一致的,历史文章列表只有一种显示形式,比较容易做自动化浏览操作处理。
3、使用AndroidStudio创建项目主要是为了可以直接运行APK到设备或虚拟机上查看所需的设备信息,运行Android工程查看设备信息的时候Edit
Configurations切换到app,运行自动化脚本的时候切换到AppiumAutoScan。支持按最近一周,一个月,一年或爬取所有历史文章,checkTimeLimit()传入不同限制时间类型的参数即可。
4、不做Android开发的可以下载Eclipse
IDE,在Eclipse下运行Java程序还比较方便,拷贝以下工程源码中的三份文件即可。
java-client-3.1.0.jar
selenium-server-standalone-2.44.0.jar
AppiumWe
开源代码仅限技术分享交流,请充分尊重公众号作者的知识产权以及劳动成果,同时作为有素质的爬虫开发人员请控制好抓取的频率,本人概不承担任何基于本代码实现的工程引起的责任或纠纷.
此项目是微信公众号批量自动化爬虫的核心实现, 面向开发者开源, 可以当做go语言包引入到自己项目中, 完整产品必须二次开发实现,QQ交流群: 563954381
微信的防作弊一直在不断更新完善,过于频繁的抓取可能导致微信账号被封禁,在需要大量抓取的任务请使用小号或者测试号进行
里面就有一篇记录自动发布微信公众号文章的介绍。
自动发布微信公众号,是程序可通过采集或者同步数据等多种方式,然后获取到标题和内容,然后经过爬虫,进行数据处理,包括微信公众号文章发布所需的封面截图等一系列操作,可大大的提高每天编写的繁琐。
该项技术采用了多种语言进行处理,可全方面实现发布全自动,如发布过程遇到问题,也会及时通知。
同时该项技术也为订阅号提供.
1.注册链接
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/indexhttps://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
到达这个界面微信扫码登录即可(若出现登录失败问题则建议换一个更好的网络环境再尝试或者尝试刷新网
可以使用Python开发微信公众号,常用的Python库包括itchat、wechatpy、wxpy等。这些库可以帮助开发者实现微信公众号的功能,例如自动回复、消息推送、菜单设置等。
其中,itchat是一个非常流行的Python库,提供了微信个人号和公众号的API,可以通过Python代码来实现微信的自动化操作。而wechatpy则是一个专门针对微信公众号的Python库,支持高级接口和企业微信接口,可以方便地进行公众号开发。
wxpy则是一个基于itchat的Python库,可以快速地实现微信机器人的开发,具有良好的扩展性和定制性。通过wxpy,开发者可以轻松地实现微信自动回复、消息推送和群聊机器人等功能。
总之,使用Python开发微信公众号可以大大提高开发效率,使得开发者可以更加专注于业务逻辑的实现。