开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 9948|回复: 4
收起左侧

[C#作业] 第五十二天作业

[复制链接]
发表于 2019-11-25 16:43:04 | 显示全部楼层 |阅读模式   广东省揭阳市

今日学习内容

52.1 Puppeteer HookRequest 替换资源案例
52.2 Puppeteer HookResponse 获取验证码 及调用 百度OCRAPI识别验证码案例

今日作业

请完成课中的登陆过程

发表于 2019-11-29 17:21:26 | 显示全部楼层   湖南省长沙市
本帖最后由 鱼塘是我的 于 2019-11-29 17:26 编辑

打开网页 => hook同时识别验证码 =>输入验证码=>模拟登录


using System;
using System.Threading;
using System.Threading.Tasks;
using PuppeteerSharp;
using Baidu.Aip.Ocr;
using System.Collections.Generic;
using System.IO;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
pageInitialized().Wait();

    }

    static async Task pageInitialized()
    {
        try
        {
            string verificationCode;
            using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions()
            {
                ExecutablePath = @"C:\Users\Hasee\AppData\Local\Google\Chrome SxS\Application\chrome.exe",
                Headless = false,
                IgnoreHTTPSErrors = false,
                IgnoredDefaultArgs = new string[] { "--enable-automation" },
                DefaultViewport = new ViewPortOptions
                {
                    Width = 800,
                    Height = 800
                }
            }))
            {
                using (var page = await browser.NewPageAsync())
                {   //Hook
                    await page.SetRequestInterceptionAsync(true);
                    page.Request += Page_Request;
                    page.Response += Page_Response;
                    await page.GoToAsync("https://passport.jumpw.com/login.jsp");
                    Console.WriteLine("请输入验证码");
                    verificationCode =  Console.ReadLine().ToString();
                    Console.WriteLine(verificationCode);

                    //自动化登录
                    await page.WaitForSelectorAsync("body > section.login-btn-box > div > div > div > div > div:nth-child(1) > div");
                    await page.TapAsync("body > section.login-btn-box > div > div > div > div > div:nth-child(1) > div");
                    await page.WaitForSelectorAsync("#userName");
                    await page.TypeAsync("#userName", "13868137181");
                    await page.WaitForSelectorAsync("#browserPwd");
                    await page.TypeAsync("#browserPwd", "123456");
                    await page.WaitForSelectorAsync("#VerifyCodeKey");
                    await page.TypeAsync("#VerifyCodeKey", "verificationCode");
                    await page.TapAsync("#selfdom > div");
                    await page.ScreenshotAsync("测试截图.png");
                }
            }
        }
        catch (Exception ex)
        {

            Console.WriteLine(ex);
        }
    }

    private async static void Page_Request(object sender, RequestEventArgs e)
    {

        await e.Request.ContinueAsync();
    }

    //验证码识别
    private async static void Page_Response(object sender, ResponseCreatedEventArgs e)
    {
        if (e.Response.Url.Contains("passport.jumpw.com/VerifyCodeServlet?codetype=LOGIN"))
        {
            Ocr client;
            client = new Ocr("MV2wRoxwcj4MMwPhOYSb*****", "xK7f48rt4FhrYO5p7***********");
            byte[] buffer = await e.Response.BufferAsync();
            var result = client.AccurateBasic(buffer);
            var options = new Dictionary<string, object>()
            {
                 {"language_type", "CHN_ENG"},
                 {"detect_direction", "true"},
                 {"detect_language", "true"},
                 {"probability", "true"}
            };
            Console.WriteLine(result);               
        }
    }
}

}

点评

MD文档一多就格式错误,论坛的编辑器需要更新了   湖南省长沙市  发表于 2019-11-29 17:27

评分

参与人数 1好评 +1 精币 +10 收起 理由
老郭 + 1 + 10 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2019-11-27 16:47:34 | 显示全部楼层   江苏省*

思路:
1.从zc表获取chrome安装位置;
2.取出baiduai返回值,并进行去空和转到小写;
3.selector
//去登录页面
selector = "body > section.login-btn-box > div > div > div > div > div:nth-child(1) > div";
//输入账号
selector = "#userName";
//输入密码
selector = "#browserPwd";
//输入验证码
selector = "#VerifyCodeKey";
//点击登录
selector = "#selfdom > div";
4.nodejs相关npm
npm i puppeteer-core    //带core可以不自动下浏览器
npm i baidu-aip-sdk

task52--zx61.rar (3.89 KB, 下载次数: 0)

评分

参与人数 1好评 +1 精币 +10 收起 理由
老郭 + 1 + 10 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表