Веб-парсинг с использованием Captcha в C # с использованием AngleSharp

Я сканирую правительственный веб-сайт с помощью Recaptcha, является ли он законным или незаконным, и я обнаружил некоторые ссылки во внутреннем коде, которые прокомментированы, кроме указанных ниже, я упоминаю ссылки, и эти ссылки не используются на веб-сайтах, с этой ссылкой я просматриваю data - это ссылка, подходящая для сканирования данных, или, если я использовал для сканирования данных по этой ссылке, владельцы веб-сайтов могут заблокировать мой IP-адрес. это мой код, что я сканирую данные

 var requester = new HttpRequester();
            requester.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";

            var configuration = Configuration.Default.WithDefaultLoader(requesters: new[] { requester }).WithCookies();
            string url = "http://www.mca.gov.in/mcafoportal/viewSignatoryDetails.do";
            var context = BrowsingContext.New(configuration);
            await context.OpenAsync(url);

            try
            {
                await context.Active.QuerySelector<IHtmlFormElement>("form[name='signatoryForm']").SubmitAsync(new
                {
                    companyID= "U30009KA2001PTC029692",
                    displayCaptcha ="false"
                });
                Console.WriteLine();
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.InnerException.Message);
            }


            if (context.Active != null)
            {
                var sdTable = context.Active.QuerySelector<IHtmlTableElement>("table[id='signatoryDetails']");
                if (sdTable != null)
                {
                    if (sdTable.Children.Count() > 0)
                    {
                        for (int i = 0; i < sdTable.Children[1].ChildElementCount; i++)
                        {
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[0].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[1].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[2].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[3].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[4].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[5].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[6].TextContent);
                            Console.WriteLine(sdTable.Children[1].Children[i].Children[7].TextContent);
                            Console.WriteLine("------------------------------");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No result found");
                }
            }
        }
        catch ( Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

я сканирую данные с этим URL Index Charges, но когда я изменяю это url Подписавшаяся сторона Я сканирую данные с ошибкой или не работаю как первый URL, пожалуйста, помогите мне, что мне не хватает в этом.


person Amarnath    schedule 01.10.2018    source источник


Ответы (1)


Я не на 100% уверен, что понимаю ваш вопрос. Тем не менее, надеюсь, следующий ответ вам немного поможет ...

Рекапча обычно требует JavaScript (насколько я знаю, есть запасной вариант, но я не уверен, используется ли он на ваших сайтах). Следовательно, даже если ваша форма может быть действительной в целом, вы никогда не получите действительный токен капчи.

Для включения JavaScript существует AngleSharp.Scripting.JavaScript, но имейте в виду, что это только экспериментальный вариант и работает только с простыми скриптами. Рассматриваемых скриптов может быть слишком много для этого.

person Florian Rappl    schedule 09.12.2018