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

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

月光魔力鸭

2019-09-10 10:15 阅读 153 喜欢 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


感谢支持!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
2020年集福已经开始了一段时间了,但是敬业福去了哪里呢?
使用mysql来进行更新大量数据的时候,报错:The total number of locks exceeds the lock table size 。 原因是全局设置的 innodb_buffer_pool_size 为 8M ,调整大一些就可以了。
windows 环境下有时候会使用curl工具来测试一些接口或页面,这里简单记录下在windows环境下的安装步骤。
作为一名前端开发人员来说,有一个比较好的工具会提高开发效率,不管是调试还是书写,这里推荐一个快速书写的利器:Emmet
Access denied for user 'root'@'localhost' (using password: YES) 碰到一个错误,不知道怎么动了权限导致外网,本地都登录不进去了。
最近有实现作业的展示的需求,在这里仅仅记录下当时自己的思路,大体如何实现的,这里并不体现代码,只有思路。
对于视频,音频等的处理,使用ffmpeg还是很方便的,但是由于命令繁多,又不好记忆,这里整理下个人常用的几个命令,后续方便查找。
chrome css 下的 media=print 下的调试小技巧