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

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

BUG集散地

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


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

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
使用mysql来进行更新大量数据的时候,报错:The total number of locks exceeds the lock table size 。 原因是全局设置的 innodb_buffer_pool_size 为 8M ,调整大一些就可以了。
在写前端页面的时候,反复操作的是切换,写完代码,切换到浏览器,然后刷新,查看效果,不合适,然后再切换回编辑器,然后修改,这样反复操作。livereload 释放了双手,自动刷新(尤其是双屏的同学特别友好)
最近有实现作业的展示的需求,在这里仅仅记录下当时自己的思路,大体如何实现的,这里并不体现代码,只有思路。
最近一直在了解关于个人支付的问题。由于之前一直想实现个人支付,但是目前微信和支付宝的支付接口都需要企业或个体户资质,导致没办法实现,无奈只能走向这个道路。 说是免签,实际上就是拿到收款金额来做些事情。
最近入手一台小主机,把自己剩余的硬盘都加上去了,想着做个私有云..使用了owncloud,类似的文章很多,不过各有各的坑,当然我这个也肯定有坑,主要是各自的环境还不一样。
日常使用`sublime text3`的时候,每次一打开都会提示让下载最新版本,可给愁死了。那么如何取消自动更新的提示呢?
如果有台能翻墙的服务器,那么我们就可以自己做一个代理,这样本地就可以科学上网啦..
记录下部署php项目的时候的经过,查了很多资料,最后才定出的这个,中间些许问题可能已经记不清楚了,趁着时间步长,赶紧回忆一下。