[京东百度签到]签到的我又来了,这次换成puppeteer了

[京东百度签到]签到的我又来了,这次换成puppeteer了

BUG集散地

2019-09-10 10:15 阅读 10 喜欢 0 puppeteer 京东签到 百度知道签到

关于自动签到,之前也有过,感觉写过好多次了,有可能也重复了,不过这次是通过puppeteer来实现的,相对于之前的phantomjs 或 casperjs 或 request 等最起码会更简单些,也不用安装这么多稀奇古怪的东西。

准备

安装

这里安装直接通过npm来安装即可,由于chrominum 比较大,其实可以调过不用下载的。 请参考这里点我-这里.

干货

原理很简单,就是模拟浏览器,然后点啊点啊..就完了,自己写这个实际上就是个熟悉API的,顺便写着玩。

//记录 各类需要自动签到的网站-- 以后会慢慢丰富(有空且无聊的时候就会增加的。)
//京东自动签到,领京豆
async function jdsign(browser,page){
    let url = `https://www.jd.com/`
    await page.goto(url, {waitUntil: 'networkidle2'});
    await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'})
    console.log(`等待点击登录`)
    await Promise.all([
        page.waitForNavigation({timeout: 0}),
        page.click('a[href="javascript:login();"]')
    ]);
    console.log(`等待点击QQ`)
    await Promise.all([
        page.waitForNavigation({timeout: 0}),
        page.click('#kbCoagent>ul>li:first-child .pdl')
    ])
    console.log(`等待点击帐号授权`)
    const frame = page.frames().find(frame=> frame.name()=='ptlogin_iframe');
    await Promise.all([
        page.waitForNavigation({timeout: 0}),
        frame.click('img[uin="我的QQ号码,记得改"]')
    ]);

    //跳转到岭兜页面
    await page.goto(`https://vip.jd.com/sign/index`);
    await page.goto(`https://home.jd.com/`);
    await page.screenshot({path : './jingdou/1.jpg'});

}


//百度知道签到
async function zhidaosign(browser,page){
    let url =`https://zhidao.baidu.com/`;
    await page.goto(url);
    await page.click('#userbar-login')
    await page.waitFor('#TANGRAM__PSP_10__footerULoginBtn')
    await page.click('#TANGRAM__PSP_10__footerULoginBtn');
    await page.type('#TANGRAM__PSP_10__userName','这个是我的帐号',{delay:100});
    await page.type('#TANGRAM__PSP_10__password','这里是我的密码',{delay : 200})
    await Promise.all([
        page.waitForNavigation(),
        page.click('#TANGRAM__PSP_10__submit')
    ]);    
    await page.click('.go-sign-in');
    await page.waitFor('#sign-in-btn')
    await page.waitFor(3000);
    await page.click('#sign-in-btn')
}

;(async ()=>{

    let puppeteer = require('puppeteer');
    let args = [
        '--no-sandbox',
        '--disable-infobars',
        // '--window-size=800,600',
        '--window-size=1920,1080',
        '--lang=zh-CN',
        '--disable-dev-shm-usage'
    ];
    const browser = await puppeteer.launch({
        headless : false,
        defaultViewport : {
            // width : 800,height:600
            width : 1920,height:1080
        },
        args : args,
        executablePath :    'C:/Users/Administrator/AppData/Local/Google/Chrome SxS/Application/chrome.exe'
        // executablePath : 'C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chrome.exe'
    });
    const page = await browser.newPage();

    //启动京东签到
    await jdsign(browser,page);

    //启动百度知道签到
    await zhidaosign(browser,page);
    await browser.close();

    process.exit(0);
})();

转载请注明出处: https://chrunlee.cn/article/puppeteer-login-record.html


如果对你有用的话,请赏给作者一个馒头吧 ...或帮点下页面底部的广告,感谢!!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
一直在做K12教育方面的产品,不过大都是学校管理层面的,对于教学一直很少触及。当然,这类的产品已经存在不少了,在功能、设计方面我们都会借鉴一些进行改进,其中有一些基础数据,如果也是从头自己收集的话,我想,可能会死的吧...比如:各个学段内的教材和章节信息。
windows 环境下有时候会使用curl工具来测试一些接口或页面,这里简单记录下在windows环境下的安装步骤。
最近有实现作业的展示的需求,在这里仅仅记录下当时自己的思路,大体如何实现的,这里并不体现代码,只有思路。
最近项目实在紧张,加上装修/生娃.. 各种事,博客基本没有怎么更新。
最近入手一台小主机,把自己剩余的硬盘都加上去了,想着做个私有云..使用了owncloud,类似的文章很多,不过各有各的坑,当然我这个也肯定有坑,主要是各自的环境还不一样。
如果有台能翻墙的服务器,那么我们就可以自己做一个代理,这样本地就可以科学上网啦..
简单记录下openssl 编译x64 以及在visual studio 中附加openssl库的过程,过程很简单,不过不是我的专业,所以比较耗时.. 很多小细节的问题。
chrome css 下的 media=print 下的调试小技巧