李振海的gravatar头像
李振海2021-03-19 10:17:39
拼多多多账户免登录实现--cefsharp

背景简介---拼多多忠实用户的日常-砍一刀

    本人是个由于砍一刀入迷了,每次砍一刀还得召唤亲朋好友,怪麻烦的,后来想到自己弄几个账号相互砍,简直完美的想法。

作为菜鸟,第一个想到的肯定是看有没有网上写好的,无奈大家都是只分享成功的喜悦,不分享怎么实现的(伤心)。还是自己动手丰衣足食。再经历3天3页的奋战,终于实现出来了。这个思路可以实现大部分网站的登录

本人使用的winform+cefsharp实现的,关于cefsharp,这里就不多介绍了

1、初始化cefsharp--

        //初始化浏览器并启动
        public void InitializeChromium()
        {
            var settings = new CefSettings
            {
                Locale = "zh-CN"
            };

            settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "caches\\";
            settings.PersistSessionCookies = true;
            settings.PersistUserPreferences = true;

            Cef.Initialize(settings);

            chromeBrowser = new ChromiumWebBrowser("http://yangkeduo.com/");
            chromeBrowser.KeyboardHandler = new CEFKeyBoardHander();
            chromeBrowser.FrameLoadEnd += Browser_FrameLoadEnd;
            
            this.panel1.Controls.Add(chromeBrowser);

            chromeBrowser.Dock = DockStyle.Fill;
        }

     this.panel1 这是个容器,大家自行放到自己的容器就行了,我这里用的是panel容器

2、核心-切换账号的实现,切换账号其实就是切换用户的“cookie”

作为小白有必要解释一下cookie ,咱们平时登录拼多多,需要手机号发送验证码登录,登录后拼多多服务会给这个用户的颁发一个token,这个token就是访问拼多多的服务器的令牌,有他拼多多的大门就向你敞开。这个token是存在cookie里边的。

            //我这儿是一个表格,选中一行切换一个账号
            PddToken pddToken = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as PddToken;
            if (pddToken == null)
            {
                return;
            }
            Cef.GetGlobalCookieManager().DeleteCookiesAsync(pddurl, "PDDAccessToken");
            Cef.GetGlobalCookieManager().DeleteCookiesAsync(pddurl, "pdd_user_id");

            var PDDAccessToken = new CefSharp.Cookie
            {
                Path = "/",
                Domain = "yangkeduo.com",
                Creation = DateTime.Today,
                Expires = DateTime.Today.AddDays(30),
                Name = "PDDAccessToken",
                Value = pddToken.PDDAccessToken
            };
            var pdd_user_id = new CefSharp.Cookie
            {
                Path = "/",
                Domain = "yangkeduo.com",
                Creation = DateTime.Today,
                Expires = DateTime.Today.AddDays(30),
                Name = "pdd_user_id",
                Value = pddToken.pdd_user_id
            };
            Cef.GetGlobalCookieManager().SetCookie(pddurl, pdd_user_id);
            Cef.GetGlobalCookieManager().SetCookie(pddurl, PDDAccessToken);

            chromeBrowser.Reload(true);

3、成功展示

首次初始化先登录一个账号,然后每次使用上边切换账号的方法就可以实现切换账号的啦。

拼多多多账户免登录实现--cefsharp

最后,此次做这个小工具收获很多,刚开始走了很多弯路,比如设置cookie,从浏览器把整个cookie取出来,然后用cefshap设置进去,发现怎么都不好使,后来才发先设置的方法有问题。后来再大神的指示下换了中思路,先登录一个账号,这样cookie就有了,切换的账号的时候只需要修改一部分就可以了。


打赏

已有1人打赏

最代码官方的gravatar头像
最近浏览
菜鸟蛋 LV2前天
星星星星
全靠浪前天
暂无贡献等级
zj105205 LV1前天
星星
a252529892 LV24月13日
星星星星
那一丝涟漪 LV84月13日
月亮月亮
15808640139 LV64月12日
月亮星星星星
vagrant14月12日
暂无贡献等级
MrQian LV14月12日
星星
hanyi-li-aiyi4月11日
暂无贡献等级
王佩琪 LV24月10日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友