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

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

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
作为程序员或多或少会用到这部分,但是又不常用,这里简单记录下大神给讲解的小技巧。
微信dat是用什么软件打开?微信dat是什么?如何查看呢? 微信的dat文件是微信用于缓存PC端微信的图片,然后对图片进行了加密的处理。所以是可以删除的,有些朋友data文件夹下有十几G的,都是可以删除的,但是最好确保这些文件都已经没有用处了再进行删除。 下面给大家介绍一个能够在线解码微信dat的网站。
前段时间弄了下微信的dat图片的解码,后续有同学问数据库的解码怎么弄.. 当然,后边陆陆续续的看了下,加上住院乱七八糟的事情,一直没处理,最近几天处理了下,发现微信数据库的数据格式是真的麻烦...
在通过vscode 来编写带有 eslint的项目的时候,会被各种各样的报错折磨崩溃,单引号 最后的逗号 空格 换行 各种各样。
最近项目实在紧张,加上装修/生娃.. 各种事,博客基本没有怎么更新。
使用mysql来进行更新大量数据的时候,报错:The total number of locks exceeds the lock table size 。 原因是全局设置的 innodb_buffer_pool_size 为 8M ,调整大一些就可以了。
日常使用`sublime text3`的时候,每次一打开都会提示让下载最新版本,可给愁死了。那么如何取消自动更新的提示呢?
最近入手一台小主机,把自己剩余的硬盘都加上去了,想着做个私有云..使用了owncloud,类似的文章很多,不过各有各的坑,当然我这个也肯定有坑,主要是各自的环境还不一样。