예제 #1
0
        public async Task OnGetAsync()
        {
            var version = await new BrowserFetcher().DownloadAsync(615489);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = false,
                Args     = new string[]
                {
                    "--no-sandbox",
                    "--disable-setuid-sandbox"
                },
                ExecutablePath = version.ExecutablePath,
                Devtools       = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync("https://upay.10010.com/jf_wxgz");

            await page.EvaluateFunctionHandleAsync("() =>{Object.defineProperty(navigator, 'webdriver', {get: () => false});}");

            await page.EvaluateFunctionOnNewDocumentAsync("() =>{ window.navigator.chrome = { runtime: {},  }; }");

            await page.EvaluateFunctionOnNewDocumentAsync("() =>{ Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] }); }");

            await page.EvaluateFunctionOnNewDocumentAsync("() =>{ Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5,6], }); }");

            Console.WriteLine(await page.EvaluateExpressionAsync("navigator.webdriver"));
            //ÌîдÊÖ»úºÅÂë
            string phone = "13113075869";
            await page.ClickAsync("#number");

            await page.TypeAsync("#number", phone);

            Thread.Sleep(1000);
            //µã»÷³äÖµ°´Å¥
            await page.ClickAsync("#cardlist > section > div.mobile-cardlist.cardlista > a:nth-child(1)");

            ElementHandle slideBtn = null;

            try
            {
                slideBtn = await page.WaitForSelectorAsync("#nc_1_n1t", new WaitForSelectorOptions { Timeout = 3 * 1000 });
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
            }
            if (slideBtn != null)
            {
                var rect = await slideBtn.BoundingBoxAsync();

                var left  = rect.X + 10;
                var top   = rect.Y + 10;
                var mouse = page.Mouse;

                await mouse.MoveAsync(left, top);

                await page.Touchscreen.TapAsync(left, top);

                await mouse.DownAsync();

                var startTime = DateTime.Now;

                await mouse.MoveAsync(left + 800, top, new PuppeteerSharp.Input.MoveOptions {
                    Steps = 30
                });

                await page.Touchscreen.TapAsync(left + 800, top);

                Console.WriteLine(DateTime.Now - startTime);
                await mouse.UpAsync();
            }

            var channel = await page.WaitForSelectorAsync("[channelcode='alipaywap']");

            await channel.ClickAsync();

            var submit = await page.WaitForSelectorAsync("body > div.mask.confirmPay > section > div.btnPd > button");

            await submit.ClickAsync();
        }