Как решить "Slider captcha" с Scrapy-sharp - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь очистить сайт Taobao с помощью Scrapy-sharp. Я смог войти в систему (заполнив имя пользователя и пароль), но затем он перенаправляет на страницу, где есть «капча-слайдер», как показано на рисунке ниже. enter image description here

Я знаю, что мы можем решить эту проблему, используя библиотеку кукловодов. Но есть и другие проблемы, с которыми я сталкиваюсь с кукловодом (см. https://stackoverflow.com/posts/comments/103786166?noredirect=1)

Мой вопрос таков: есть ли способ решить капчу-слайдер с помощью Scrapy-sharp и HtmlAgility pack? Как мы можем получить ограничивающий прямоугольник ползунка? а затем вызвать события мыши в Scrapy-sharp?

Мой код для очистки выглядит следующим образом:

 ScrapingBrowser Browser = new ScrapingBrowser();
        Browser.AllowAutoRedirect = true;
        // Browser has settings you can access in setup   
        Browser.AllowMetaRedirect = true;
        WebPage PageResult = Browser.NavigateToPage(new Uri("https://login.m.taobao.com/login_oversea.htm?loginFrom=wap_tmall&assets_js=mui%2Ffeloader%2F4.0.22%2Ffeloader-min.js,mui%2Ftmapp-standalone%2F4.0.3%2Fseed.js,mui%2Ftmapp-standalone%2F4.0.3%2Flogin-download.js&assets_css=3.0.8%2Fmobile%2Ftmallh5.css&redirectURL=https%3A%2F%2Fwww.tmall.com%2F"));
        PageWebForm form = PageResult.FindFormById("loginForm");
        form["TPL_username"] = "<<someusername>>";
        form["TPL_password"] = "********";
        form.Method = HttpVerb.Post;
        WebPage resultsPage = form.Submit();
        PageWebForm searchForm = resultsPage.FindForm("searchTop");
        searchForm.Method = HttpVerb.Post;
        searchForm["q"] = "nike";
        //subsequent pages
        //var postResults = searchForm.Submit(new Uri(@"https://list.tmall.com/m/search_items.htm?page_size=20&page_no=3&q=Nike&type=p&tmhkh5=&spm=a220m.6910245.a2227oh.d100&from=mallfp..m_1_searchbutton&searchType=&closedKey="));
        //1st page//
         var postResults= searchForm.Submit(new Uri(@"https://list.tmall.com/search_product.htm?q=nike&type=p&tmhkh5=&spm=a220m.8599659.a2227oh.d100&from=mallfp..m_1_searchbutton&searchType=default&closedKey="));
        //PageWebForm verForm = resultsPage.FindFormById("verifyForm");
        //verForm.Method = HttpVerb.Post;
        //verForm.Action = "https://passport.taobao.com/iv/h5/h_5_verify_modes.htm";
        //WebPage postResults = verForm.Submit();

        //var divs = JsonConvert.DeserializeObject<RootObject>(postResults.Content);
        var divs = postResults.Html.SelectNodes("//div[@class='product  ']")

Но когда форма отправлена, она перенаправляется на страницу с ползунком капчи. Любые советы / советы о том, как обойти эту проблему?

...