亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

使用node搭建自動發圖文微博機器人的方法

2024-05-06 16:49:20
字體:
來源:轉載
供稿:網友

本文僅供學習交流,請勿用于商業用途,并遵守新浪微博相關規定。

代碼目錄

node,微博,機器人

此微博機器人的實現功能如下:

  • 模擬登陸新浪微博,獲取cookie;
  • 自動上傳圖片至微博圖床;
  • 自動發送內容不同的圖文微博;
  • 通過定時任務,實現周期性發微博任務。

效果圖

node,微博,機器人

圖文內容我固定了,可自行使用第三方api獲取要發送的內容或爬取第三方內容發送。(偷個懶...

node,微博,機器人

要實現發送圖文微博可以分為三個步驟

  • 登錄微博。
  • 圖片上傳至微博圖床獲取PID。
  • 發送微博。

登錄

登錄可以使用Puppeteer node庫,很輕松的實現登錄獲取微博cookie,這里不多介紹,可以自行搜索Puppeteer學習。

Puppeteer是谷歌官方出品的一個通過DevTools協議控制headless Chrome的Node庫。可以通過Puppeteer的提供的api直接控制Chrome模擬大部分用戶操作來進行UI Test或者作為爬蟲訪問頁面來收集數據。
async function login(username, password) {  const browser = await puppeteer.launch({    // headless: false,    slowMo: 250,    executablePath: ''  });  const page = (await browser.pages())[0];  await page.setViewport({    width: 1280,    height: 800  });  await page.goto("https://weibo.com/");  await page.waitForNavigation();  await page.type("#loginname", username);  await page.type("#pl_login_form > div > div:nth-child(3) > div.info_list.password > div > input", password);  await page.click("#pl_login_form > div > div:nth-child(3) > div:nth-child(6)");  await page.waitForNavigation().then(result => {    return new Promise((resolve) => {      page.cookies().then(async cookie => {        fs.createWriteStream("cookie.txt").write(JSON.stringify(cookie), "UTF8");//存儲cookie        await browser.close();//關閉打開的瀏覽器        resolve(cookie);      });    })  }).catch(e => {    page.screenshot({      path: 'code.png',      type: 'png',      x: 800,      y: 200,      width: 100,      height: 100    });    return new Promise((resolve, reject) => {      readSyncByRl("請輸入驗證碼").then(async (code) => {        await page.type("#pl_login_form > div > div:nth-child(3) > div.info_list.verify.clearfix > div > input", code);        await page.click("#pl_login_form > div > div:nth-child(3) > div:nth-child(6)");        await page.waitForNavigation();        page.cookies().then(async cookie => {          fs.createWriteStream("cookie.txt").write(JSON.stringify(cookie), "UTF8");          await browser.close();          resolve(cookie);        });      })    })  })}

圖片上傳至微博圖床

上傳到微博圖床可以看這里 http://weibo.com/minipublish 抓包看上傳的接口過程,可以看到上傳的是base64圖片信息。所以上傳前把圖片轉換成base64編碼,而本地圖片的編碼和互聯網鏈接圖片的編碼又不一樣,這里使用的是互聯網鏈接的圖片,node本地圖片轉換成base64編碼更簡單些。上傳成功后返回微博圖床圖片的pid。記住這個pid,發微博用的就是這個pid。

發送微博

有了微博cookie和圖片pid后就可以發微博了,多張圖片時pid之間以|隔開的。

async function weibopost(text, pic_ids = '', cookie) { //發送微博內容(支持帶圖片)  return new Promise(async (resolve, reject) => {    if (cookie === '') {      reject('Error: Cookie not set!');    }    let post_data = querystring.stringify({      'location': 'v6_content_home',      'text': text,      'appkey': '',      'style_type': '1',      'pic_id': pic_ids,      'tid': '',      'pdetail': '',      'mid': '',      'isReEdit': 'false',      'rank': '0',      'rankid': '',      'module': 'stissue',      'pub_source': 'main_',      'pub_type': 'dialog',      'isPri': '0',      '_t': '0'    });    let post_options = {      'Accept': '*/*',      'Accept-Encoding': 'gzip, deflate, br',      'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',      'Connection': 'keep-alive',      'Content-Length': Buffer.byteLength(post_data),      'Content-Type': 'application/x-www-form-urlencoded',      'Cookie': cookie,      'Host': 'weibo.com',      'Origin': 'https://weibo.com',      'Referer': 'https://weibo.com',      'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36',      'X-Requested-With': 'XMLHttpRequest'    };    let {      data    } = await axios.post('https://weibo.com/aj/mblog/add?ajwvr=6&__rnd=' + new Date().getTime(), post_data, {      withCredentials: true,      headers: post_options    })    if (data.code == 100000) {      console.log('/n' + text + '-----Sent!' + '---' + new Date().toLocaleString());      resolve(data);    } else {      console.log('post error');      reject('post error');    }  });}

最后就是定時任務了,定時任務可以使用node-schedule node庫,這里不多介紹,可以自行搜索學習。這里使用的是每隔10分鐘發送一次。

function loginTo() {  login(config.username, config.password).then(async () => {    let rule = null;    rule = new schedule.RecurrenceRule();    rule.minute = [01, 11, 21, 31, 41, 51];    try {      let cookie = await getCookie();      getContent(cookie);    } catch (error) {      console.log(error);    }    j = schedule.scheduleJob(rule, async () => { //定時任務      try {        let cookie = await getCookie();        getContent(cookie);      } catch (error) {        console.log(error);      }    });  })}

代碼地址: github地址

參考

https://github.com/itibbers/weibo-post

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91视频-88av| 91高清免费在线观看| 狠狠久久五月精品中文字幕| 亚洲一区二区三区毛片| 久久久精品在线| 日本一区二区三区在线播放| 久久免费少妇高潮久久精品99| 欧美资源在线观看| 中文字幕日本精品| 欧美成人精品一区二区三区| 国产精品视频1区| 6080yy精品一区二区三区| 日韩网站免费观看高清| 亚洲欧美国产日韩中文字幕| 精品国产乱码久久久久久天美| 中文字幕精品网| 亚洲第一天堂无码专区| 日韩中文字幕视频在线| 欧美日韩一区二区免费在线观看| 日韩在线国产精品| 日韩视频第一页| 亚洲国产精品悠悠久久琪琪| 另类少妇人与禽zozz0性伦| 亚洲影院色在线观看免费| 欧美性生交xxxxx久久久| 色综合伊人色综合网| 欧美—级高清免费播放| 亚洲一区国产精品| 久久中文字幕国产| 日本成人在线视频网址| 96精品久久久久中文字幕| 久久精品国产欧美激情| 国产亚洲视频中文字幕视频| 国产精品丝袜一区二区三区| 亚洲女在线观看| 日韩视频第一页| 欧美亚州一区二区三区| 亚洲一区二区自拍| 日韩欧美a级成人黄色| 一区二区亚洲精品国产| 狠狠久久五月精品中文字幕| 中文字幕视频在线免费欧美日韩综合在线看| 91最新在线免费观看| 91精品国产高清自在线看超| 91精品视频网站| 8x海外华人永久免费日韩内陆视频| 欧美亚洲一级片| 欧美精品久久久久久久| 26uuu亚洲伊人春色| 色综久久综合桃花网| 欧美俄罗斯乱妇| 播播国产欧美激情| 美日韩丰满少妇在线观看| 亚洲视频一区二区三区| 国产日本欧美一区二区三区在线| 欧美成人精品在线视频| 欧洲亚洲免费在线| 国产精品一区二区三区毛片淫片| 日韩精品免费在线视频观看| 亚洲精品成人久久| 狠狠躁天天躁日日躁欧美| 亚洲视频精品在线| 国产精品视频自拍| 欧美成人一区二区三区电影| 国产成人一区二区| 欧美电影免费观看高清完整| 91精品综合久久久久久五月天| 日韩成人激情影院| 亚洲图片欧美日产| 欧美小视频在线| 亚洲色图综合久久| 国产日韩综合一区二区性色av| 国产精品爱啪在线线免费观看| 国产精品扒开腿爽爽爽视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产欧美一区二区三区久久| 久久99国产精品久久久久久久久| 中文字幕一区日韩电影| 亚洲精品视频网上网址在线观看| 在线观看久久av| 欧美在线视频一区二区| 色综合亚洲精品激情狠狠| 欧美性猛交xxxx黑人| 日韩二区三区在线| 久久久精品在线| 国产97在线亚洲| 亚洲国产精品va在线| 日韩精品在线观看网站| 91精品视频播放| 久久久女女女女999久久| 国产91精品久久久久久| 日韩成人激情在线| 国产精品扒开腿做爽爽爽男男| 欧美精品九九久久| 国产成人综合久久| 九九九热精品免费视频观看网站| 激情成人在线视频| 国产成人精品免高潮在线观看| 成人h片在线播放免费网站| 91在线观看免费| 欧美精品电影在线| 亚洲国产精久久久久久久| 日韩av在线看| 亚洲va久久久噜噜噜久久天堂| 97精品国产97久久久久久免费| 日韩电影免费在线观看| 日日噜噜噜夜夜爽亚洲精品| 国产不卡一区二区在线播放| 国产成人精品a视频一区www| 裸体女人亚洲精品一区| 亚洲人成在线观看网站高清| 日韩中文在线中文网在线观看| 懂色av中文一区二区三区天美| 中文字幕亚洲欧美在线| 国产精品你懂得| 国产成人精品日本亚洲| 欧美在线观看网站| 国产成人精品免费视频| 久久伊人精品天天| 亚洲欧美中文日韩在线| 一区二区三区回区在观看免费视频| 91国偷自产一区二区三区的观看方式| 国产成人在线精品| 青青a在线精品免费观看| 欧美裸体视频网站| 欧美午夜女人视频在线| 九九热精品视频在线播放| 欧美成人中文字幕在线| 亚洲国产精品久久久久秋霞蜜臀| 欧美日韩国产第一页| 热草久综合在线| 欧美激情免费在线| 亚洲欧洲午夜一线一品| 91麻豆国产语对白在线观看| 奇米四色中文综合久久| 日韩精品视频免费在线观看| 日韩毛片在线看| 欧美高清一级大片| 国产日韩欧美另类| 亚洲人在线观看| 国外日韩电影在线观看| 国产日韩欧美综合| 久久在线免费观看视频| 亚洲直播在线一区| 精品国产鲁一鲁一区二区张丽| 欧美激情一级精品国产| 亚洲一区二区三区xxx视频| 欧美资源在线观看| 国产99久久精品一区二区永久免费| 日韩欧美成人精品| 欧美成人免费小视频| 国产男人精品视频| 国产亚洲精品一区二555| 精品亚洲一区二区三区在线观看| 日韩成人在线视频| 蜜臀久久99精品久久久久久宅男| 国产精品吴梦梦| 日韩中文视频免费在线观看| 国产欧美精品一区二区三区-老狼| 中国人与牲禽动交精品| 992tv成人免费视频| 97在线视频免费观看| 91久久久久久久一区二区| 亚洲国语精品自产拍在线观看|