Загрузка...

Обход защиты CloudFlare C# xNet

Тема в разделе C# создана пользователем inzanty 4 авг 2017. 1701 просмотр

Загрузка...
  1. inzanty
    inzanty Автор темы 4 авг 2017 688 28 авг 2016
    1. Итак для реализации ****ов на некоторые сайты с защитой от CloudFlare пришлось как-то разбираться с этим делом, решил поделиться опытом, так что нам понадобится:

      1. Прямые руки
      2. Visual Studio 2008-2015

      Итак, первым делом тыкаем правой кнопочкой на проекте, управление пакетами NuGet, ищем и устанавливаем Jint, интерпритатор Js для c#

      Ну а далее код:
    2. Код

      using (var req = new xNet.HttpRequest())
      {
      var con = "";
      var JSEngine = new Jint.Engine();
      var uri = new Uri("Сайт.ру");

      try
      {
      req.Cookies = new CookieDictionary();
      req.UserAgent = Http.ChromeUserAgent();
      //Делаем запрос к сайту с защитой CF, вероятнее всего он выдаст ошибку 503 и отправимся мы в блок Catch
      con = req.Get("Сайт.ру").ToString();
      }
      catch (Exception)
      {
      //В переменную Con заносим ответ от сайта и парсим нужную инфу
      con = req.Response.ToString();
      var challenge = Regex.Match(con, "name=\"jschl_vc\" value=\"(\\w+)\"").Groups[1].Value;
      var challenge_pass = Regex.Match(con, "name=\"pass\" value=\"(.+?)\"").Groups[1].Value;

      var builder = Regex.Match(con, @"setTimeout\(function\(\){\s+(var t,r,a,f.+?\r?\n[\s\S]+?a\.value =.+?)\r?\n").Groups[1].Value;
      builder = Regex.Replace(builder, @"a\.value =(.+?) \+ .+?;", "$1");
      builder = Regex.Replace(builder, @"\s{3,}[a-z](?: = |\.).+", "");
      builder = Regex.Replace(builder, @"[\n\\']", "");

      //Выполняем JS
      long solved = long.Parse(JSEngine.Execute(builder).GetCompletionValue().ToObject().ToString());
      solved += uri.Host.Length; //add the length of the domain to it.

      //Ждем 3 сек, иначе CF пошлет нас к хуям
      Thread.Sleep(3000);

      //Генерируем запрос
      string cookie_url = string.Format("{0}://{1}/cdn-cgi/l/chk_jschl", uri.Scheme, uri.Host);
      var uri_builder = new UriBuilder(cookie_url);
      var query = HttpUtility.ParseQueryString(uri_builder.Query);
      query["jschl_vc"] = challenge;
      query["pass"] = challenge_pass;
      query["jschl_answer"] = solved.ToString();
      uri_builder.Query = query.ToString();

      req.AllowAutoRedirect = false;
      req.Referer = "Сайт.ру";

      //Отправляем запрос
      con = req.Get(uri_builder.Uri).ToString();

      //После данного запроса спокойно можем шакалить по сайту
      //Конечно же с данным экземпляром класса

      }
     
  2. kidua
    kidua 4 авг 2017 Заблокирован(а)
    годно, лук заслужил
    [IMG]
     
Top