成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

使用node搭建自動(dòng)發(fā)圖文微博機(jī)器人

Profeel / 3358人閱讀

摘要:僅供學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途,并遵守新浪微博相關(guān)規(guī)定。代碼目錄此微博機(jī)器人的實(shí)現(xiàn)功能如下模擬登陸新浪微博獲取自動(dòng)上傳圖片至微博圖床自動(dòng)發(fā)送內(nèi)容不同的圖文微博通過定時(shí)任務(wù),實(shí)現(xiàn)周期性發(fā)微博任務(wù)。

僅供學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途,并遵守新浪微博相關(guān)規(guī)定。

代碼目錄

此微博機(jī)器人的實(shí)現(xiàn)功能如下:

模擬登陸新浪微博,獲取cookie;

自動(dòng)上傳圖片至微博圖床;

自動(dòng)發(fā)送內(nèi)容不同的圖文微博;

通過定時(shí)任務(wù),實(shí)現(xiàn)周期性發(fā)微博任務(wù)。

效果圖


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

要實(shí)現(xiàn)發(fā)送圖文微博可以分為三個(gè)步驟

登錄微博。

圖片上傳至微博圖床獲取PID。

發(fā)送微博。

登錄

登錄可以使用Puppeteer node庫,很輕松的實(shí)現(xiàn)登錄獲取微博cookie,這里不多介紹,可以自行搜索Puppeteer學(xué)習(xí)。

Puppeteer是谷歌官方出品的一個(gè)通過DevTools協(xié)議控制headless Chrome的Node庫??梢酝ㄟ^Puppeteer的提供的api直接控制Chrome模擬大部分用戶操作來進(jìn)行UI Test或者作為爬蟲訪問頁面來收集數(shù)據(jù)。
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");//存儲(chǔ)cookie
                await browser.close();//關(guān)閉打開的瀏覽器
                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("請(qǐng)輸入驗(yàn)證碼").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圖片信息。所以上傳前把圖片轉(zhuǎn)換成base64編碼,而本地圖片的編碼和互聯(lián)網(wǎng)鏈接圖片的編碼又不一樣,這里使用的是互聯(lián)網(wǎng)鏈接的圖片,node本地圖片轉(zhuǎn)換成base64編碼更簡(jiǎn)單些。上傳成功后返回微博圖床圖片的pid。記住這個(gè)pid,發(fā)微博用的就是這個(gè)pid。

發(fā)送微博

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

async function weibopost(text, pic_ids = "", cookie) { //發(fā)送微博內(nèi)容(支持帶圖片)
    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("
" + text + "-----Sent!" + "---" + new Date().toLocaleString());
            resolve(data);
        } else {
            console.log("post error");
            reject("post error");
        }

    });
}

最后就是定時(shí)任務(wù)了,定時(shí)任務(wù)可以使用node-schedule node庫,這里不多介紹,可以自行搜索學(xué)習(xí)。這里使用的是每隔10分鐘發(fā)送一次。

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 () => { //定時(shí)任務(wù)
            try {
                let cookie = await getCookie();
                getContent(cookie);
            } catch (error) {
                console.log(error);
            }

        });
    })
}
源碼地址: github地址 參考
https://github.com/itibbers/w...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/102814.html

相關(guān)文章

  • 借助詩詞API和微博圖床搭建自動(dòng)發(fā)圖文微博機(jī)器人

    摘要:微博圖床對(duì)于微博圖床的理解得力于這篇文章利用微博當(dāng)圖床語言實(shí)現(xiàn)。源碼如下上傳圖片到微博圖床圖片文件圖片是否采用方式上傳返回的數(shù)據(jù)微博提交正則表達(dá)式提取返回結(jié)果中的數(shù)據(jù)微博機(jī)器人源碼列舉了所要用到的幾個(gè)重要,最后還是貼一下機(jī)器人的源碼吧。 ? 在2011年的時(shí)候,浙大的一位博士生借助微博的開放平臺(tái)為他實(shí)驗(yàn)室的一臺(tái)飲水機(jī)弄了個(gè)微博,名喚@浙大CCNT實(shí)驗(yàn)室飲水機(jī),俗稱飲水機(jī)娘。當(dāng)年這...

    沈建明 評(píng)論0 收藏0
  • 圖文并茂揭開深度學(xué)習(xí)神秘面紗,兼談人工智能狂熱的荒誕

    摘要:對(duì)深度學(xué)習(xí)模型而言,水就是海量的數(shù)據(jù)。就拿機(jī)器識(shí)別物體這樣的任務(wù)來說,通過數(shù)百萬副圖片的訓(xùn)練,深度學(xué)習(xí)模型甚至可以超過人的肉眼的識(shí)別能力,這確實(shí)是人工智能在感知類問題上重要的里程碑。關(guān)于深度學(xué)習(xí),還有一個(gè)有趣的現(xiàn)象。 說到人工智能和機(jī)器人,上點(diǎn)兒歲數(shù)的碼農(nóng)們可能對(duì)封面這張圖有點(diǎn)印象。不明就里的朋友,可以回去補(bǔ)習(xí)一下《編輯部的故事》。我是個(gè)二手的人工智能表演藝術(shù)家:從博士畢業(yè)開始,就在MSRA...

    jimhs 評(píng)論0 收藏0
  • CI Weekly #3 | 關(guān)于微服務(wù)、Docker 實(shí)踐與 DevOps 指南

    摘要:圍繞軟件工程效率提升進(jìn)行一系列技術(shù)內(nèi)容分享,包括國(guó)內(nèi)外持續(xù)集成持續(xù)交付,持續(xù)部署自動(dòng)化測(cè)試等實(shí)踐教程工具與資源,以及一些工程師文化相關(guān)的程序員。劃分了數(shù)據(jù)庫日志安全監(jiān)控配置管理云服務(wù)等個(gè)大類,個(gè)工具。 CI Weekly 圍繞『 軟件工程效率提升』 進(jìn)行一系列技術(shù)內(nèi)容分享,包括國(guó)內(nèi)外持續(xù)集成、持續(xù)交付,持續(xù)部署、自動(dòng)化測(cè)試、 DevOps 等實(shí)踐教程、工具與資源,以及一些工程師文化相關(guān)...

    monw3c 評(píng)論0 收藏0
  • 阿里云賬號(hào)注冊(cè)流程方法(圖文教程)

    摘要:以上為阿里云賬號(hào)注冊(cè)的方法流程,官方文檔阿里云賬號(hào)注冊(cè)流程中也有教程,由于阿里云賬號(hào)需要實(shí)名認(rèn)證才可以正常使用,所以云吞鋪?zhàn)咏ㄗh可以通過支付寶淘寶微博等方式登錄,可以免去實(shí)名認(rèn)證,不然還得上傳身份證審核。購買阿里云服務(wù)器、域名或者其他云產(chǎn)品都需要阿里云賬號(hào),而且賬號(hào)必須實(shí)名認(rèn)證否則購買不了,云吞鋪?zhàn)臃窒碣~號(hào)注冊(cè)流程方法及常見問題解答: 阿里云賬號(hào)注冊(cè)流程方法 1. 先打開阿里云官網(wǎng)www.a...

    Towers 評(píng)論0 收藏0
  • 人工智能離前端并不遠(yuǎn) 一步步教你開發(fā)一個(gè)機(jī)器學(xué)習(xí)APP(附源碼)

    摘要:最重要的是,我的代碼全部以實(shí)現(xiàn),是時(shí)候讓前端工程師們?cè)谌斯ぶ悄軝C(jī)器學(xué)習(xí)領(lǐng)域大展身手了。千萬不要被表象所困擾,更不要被人工智能機(jī)器學(xué)習(xí)的標(biāo)簽所迷惑?;谕瑯佑捎?jì)算機(jī)視覺科學(xué)家開發(fā)的成熟且高度可擴(kuò)展的深度學(xué)習(xí)技術(shù),每天能夠分析數(shù)十億張圖像。 最近HBO電視網(wǎng)推出的美劇《硅谷Silicon Valley》席卷全球,里面有一個(gè)橋段介紹了超級(jí)有趣的iOS app-?Not Hotdog。你甚至可...

    Pines_Cheng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<