Cloud Flare - обход защиты на легке

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Реакции
825
Баллы
93
upload_2018-3-4_1-34-51.jpeg

Периодически на форуме возникает вопрос, как же ее обойти.

Обойти ее можно несколькими вариантами.
На форуме уже выкладывались решения в том или ином формате, но в большинстве случаев это достаточно громоздкие решения, к примеру с кучей кубиков, которые не удобно таскать из проекта в проект.

Так как же сделать так, чтобы это было удобно?

По началу использовал Jint в который пихал js скрипт полученный с сайта при заходе на который всплывала защита cloudflare, парсил параметры, остылал запросы, и т.д.
Плюс пробить cloudflare с первой попытки бывает не всегда получается, т.е надо отсылать запросы, смотреть что получилось, и так несколько раз. В общем не совсем удобно.

Потом наткнулся на CloudFlareUtilites в котором уже есть все что надо, т.е. сам механизм обхода защиты. В итоге отдаются куки, которые можно использовать в дальнейшем.

Осталось поверх этого решения сделать свою обвязку из кода для удобства использования.:-)

В дальнейшем был сделан класс, который удобно юзать и в ZennoPoster, и в своих прогах.

В итоге, чтобы обойти защиту cloudflare в ZennoPoster, надо сделать несколько простых шагов.

1. Добавить в OwnCode класс CloudFlareBreaker и необходимые namespace
upload_2018-3-4_1-6-15.png


2. Добавить необходимые библиотеки
upload_2018-3-4_1-10-18.png

System.Net.Http и System.Runtime это системные библиотеки.
CloudFlareUtilites необходимо добавить в ExternalAssemblies в папке ZennoPoster


3. Использовать
upload_2018-3-4_1-30-33.png
Сделаем пробив защиты на примере известного сайта.:-)
Создаем объект класса CloudFlareBreaker, инициализируем св-ва.

Address - адрес сайта
Proxy - прокси
UserAgent - юзерагент
MaxRetries - кол-во попыток пробива cloudlfare

Дальше вызываем метод Break
upload_2018-3-4_1-30-12.png

После этого куки для обхода cloudlfare можно получить в двух форматах:
string - удобно юзать в ZennoPoster
CookieContainer - его удобно использовать в своих прогах, или в ZennoPoster, если работать с .Net классами напрямую. Также его можно передавать через project.Context в самом ZennoPoster.

Соответственно есть два метода GetCookieContainer и GetCookieStr через которые и получаем куки. Если эти методы возвращают null, то значит защиту пробить не получилось.

Дальше добавляем эти куки к основным и работаем.
upload_2018-3-4_1-26-29.png
 
Категория
  1. Полезно

Вложения

Последнее редактирование:
Спасибо! Крутая штука!
 
  • Спасибо
Реакции: Moadip
Слишком замороченное решение, на мой взгляд. Всё отлично работает и решается в 130-150 строк кода без всяких доп. библиотек и на форуме даже где-то было такое решение.
 
Может прокси заюзанные?
Или уровень паранойи владельцев конкретного сайта повышенный.

Ни разу на прокладке кф рекапчи не видел.
 
  • Спасибо
Реакции: Almaz-soft
Слишком замороченное решение, на мой взгляд. Всё отлично работает и решается в 130-150 строк кода без всяких доп. библиотек и на форуме даже где-то было такое решение.
А чем замороченное? Что библиотеки добавлять? Ну хз для меня это не проблема.

Насчет 130-150 строчек. Ну тут все решение по сути укладывается в 35 строк кода. Можно поджать и до 25.:D
upload_2018-3-4_9-53-7.png

Остальное это вспомогательные методы, которые у меня вынесены в отдельный класс, тут же просто запихал все в один.

Защиту можно обойти двумя способами. Или выполнить js скрипт, чтобы сформировать урл для запроса, или расковырять js скрипт и из него самому сформировать урл.

Я делал через Jint, основное решение выглядело примерно так.
upload_2018-3-4_9-57-55.png

Про то что ты пишешь, там идет расковыривание js сркипта. И там скорее всего решение выдрано из CloudFlareUtilities.
Во сколько строчек кода, и только ли кода, не помню как там сделано.

https://github.com/elcattivo/CloudFlareUtilities/blob/master/CloudFlareUtilities/ChallengeSolver.cs
Вот тут собственно и формируется урл для запроса.
upload_2018-3-4_10-24-40.png

А насчет кол-ва строк, я не стремлюсь сделать все максимально компактно, пусть лучше будет больше кода, разнесено в отдельные классы и методы, но зато это воспринимается проще, чем когда все в кучу.

Но каждому свое.:-)
 
Здравствуйте, пытался перенести ваш код в Visual Studio, вроде все нормально. ни на что не ругается, но программа зависает на client.SendAsync(msg).Wait(); и дальше не идет, в чем может быть проблема ?


Решил проблему вытащить все в отдельный поток, не знаю как это связано, но работает :) Автору темы большой спасибо!
 
Последнее редактирование:
Решил проблему вытащить все в отдельный поток, не знаю как это связано, но работает
Раз проблема решилась вытаскиванием в отдельный поток, то значит до этого запуск был в основном, гуишном потоке.
Любые долговременные операции, скачивание, вычисления, надо обязательно выносить в отдельный поток, т.к. на их выполнение надо время, и пока данный код не выполнится, дальше программа работать не будет, соответственно и весь интерфейс подвисает.
 
Раз проблема решилась вытаскиванием в отдельный поток, то значит до этого запуск был в основном, гуишном потоке.
Любые долговременные операции, скачивание, вычисления, надо обязательно выносить в отдельный поток, т.к. на их выполнение надо время, и пока данный код не выполнится, дальше программа работать не будет, соответственно и весь интерфейс подвисает.
Проблема была не в том, что он подвисал, а в том, что программа просто не выполнялась дальше. Не через 5 минут, не через 30 ( чекал брейкпоинтом после данной строчки)
 
Не хрюкает ни на 1 из протестированных мной сайтов((( К примеру сайт: https://tiny-pool.com. Вставляю складчик в свой проект, сразу получаю куки, вставляю свой адрес любой - "CSharp OwnCode Ссылка на объект не указывает на экземпляр объекта."
 
Как исправить ??
 

Вложения

  • Снимddок.PNG
    Снимddок.PNG
    19,4 KB · Просмотры: 1 023
Везде в общем коде вместо CookieContainer указать полный путь ZennoLab...
Для всех, кому эта фраза показалась набором символов, а не осмысленной инфой (я в первую очередь себя имею ввиду) нужно сделать следующее: во всех строках, по которым идут ошибки, нужно вместо CookieContainer написать ZennoLab.CommandCenter.CookieContainer

PS: Анекдот про подводную лодку и "Ты не выделывайся, ты рукой покажи!" будет актуален всегда.
 
  • Спасибо
Реакции: Reactor3000
Теперь новая проблема:
Ошибка при компиляции общего кода "CS0029" "Неявное преобразование типа "ZennoLab.CommandCenter.CookieContainer" в "System.Net.CookieContainer" невозможно". [Строка: 82; Cтолбец: 25]
Сейчас общий код выглядит вот так:
Код:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;


using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Collections;
using CloudFlareUtilities;


namespace ZennoLab.OwnCode
{
    public class CloudFlareBreaker
    {
        public string Address { get; set; }
        public string UserAgent { get; set; }
        public string Proxy { get; set; }
        public int MaxRetries { get; set; }

        private ZennoLab.CommandCenter.CookieContainer _cookieContainer;

        public void Break()
        {
            _cookieContainer = GetCloudFlareCookies(Address, UserAgent, Proxy, MaxRetries);
        }

        public ZennoLab.CommandCenter.CookieContainer GetCookieContainer()
        {
            return _cookieContainer;
        }

        public string GetCookieStr()
        {
            if (_cookieContainer == null) return null;

            var list = GetAllCookies(_cookieContainer)
                .Cast<Cookie>()
                .Select(c => c.Name + "=" + c.Value)
                .ToList();

            return string.Join(";", list);
        }

        private ZennoLab.CommandCenter.CookieContainer GetCloudFlareCookies(string address, string userAgent, string proxy, int maxRetries)
        {
            var currentTry = 0;

            while (currentTry < maxRetries)
            {
                try
                {
                    var cookies = new ZennoLab.CommandCenter.CookieContainer();

                    var msg = new HttpRequestMessage()
                    {
                        RequestUri = new Uri(address),
                        Method = HttpMethod.Get
                    };

                    msg.Headers.TryAddWithoutValidation("User-Agent", userAgent);

                    var client = new HttpClient(new ClearanceHandler(new HttpClientHandler
                    {
                        UseCookies = true,
                        CookieContainer = cookies,
                        Proxy = SetProxy(proxy)
                    }));

                    client.SendAsync(msg).Wait();

                    return cookies;
                }
                catch (Exception)
                {
                    currentTry += 1;
                }
            }

            return null;
        }

        private CookieCollection GetAllCookies(ZennoLab.CommandCenter.CookieContainer container)
        {
            var allCookies = new CookieCollection();
            var domainTableField = container.GetType().GetRuntimeFields().FirstOrDefault(x => x.Name == "m_domainTable");
            var domains = (IDictionary)domainTableField.GetValue(container);

            foreach (var val in domains.Values)
            {
                var type = val.GetType().GetRuntimeFields().First(x => x.Name == "m_list");
                var values = (IDictionary)type.GetValue(val);

                foreach (CookieCollection cookies in values.Values)
                {
                    allCookies.Add(cookies);
                }
            }
            return allCookies;
        }

        private WebProxy SetProxy(string proxy)
        {
            if (string.IsNullOrEmpty(proxy)) return null;

            WebProxy wp;

            var split = proxy.Split('@');

            if (split.Length == 1)
            {
                wp = new WebProxy(proxy);
            }
            else
            {
                var credential = split[0].Split(':');
                var addres = split[1];

                wp = new WebProxy(addres)
                {
                    Credentials = new NetworkCredential
                    {
                        UserName = credential[0],
                        Password = credential[1]
                    }
                };
            }

            return wp;
        }
    }   
}
 
Последнее редактирование:
private ZennoLab.CommandCenter.CookieContainer GetCloudFlareCookies(string address, string userAgent, string proxy, int maxRetries)
61-я строка, здесь не выдавало никаких ошибок при компиляции (на сколько помню). В общем попробуйте вместо ZennoLab.CommandCenter здесь System.Net указать. Сейчас нет возможности посмотреть свой код, как там в итоге расставлены точки над "ё".
 
  • Спасибо
Реакции: iBotovod
Bas, спасибо за ответ.
У задавшего вопрос в этой строке ошибки нет, но у меня она появляется.
По итогу при таком общем коде:
Код:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;


using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Collections;
using CloudFlareUtilities;


namespace ZennoLab.OwnCode
{
    public class CloudFlareBreaker
    {
        public string Address { get; set; }
        public string UserAgent { get; set; }
        public string Proxy { get; set; }
        public int MaxRetries { get; set; }

        private ZennoLab.CommandCenter.CookieContainer _cookieContainer;

        public void Break()
        {
            _cookieContainer = GetCloudFlareCookies(Address, UserAgent, Proxy, MaxRetries);
        }

        public ZennoLab.CommandCenter.CookieContainer GetCookieContainer()
        {
            return _cookieContainer;
        }

        public string GetCookieStr()
        {
            if (_cookieContainer == null) return null;

            var list = GetAllCookies(_cookieContainer)
                .Cast<Cookie>()
                .Select(c => c.Name + "=" + c.Value)
                .ToList();

            return string.Join(";", list);
        }

        private ZennoLab.CommandCenter.CookieContainer GetCloudFlareCookies(string address, string userAgent, string proxy, int maxRetries)
        {
            var currentTry = 0;

            while (currentTry < maxRetries)
            {
                try
                {
                    var cookies = new ZennoLab.CommandCenter.CookieContainer();

                    var msg = new HttpRequestMessage()
                    {
                        RequestUri = new Uri(address),
                        Method = HttpMethod.Get
                    };

                    msg.Headers.TryAddWithoutValidation("User-Agent", userAgent);

                    var client = new HttpClient(new ClearanceHandler(new HttpClientHandler
                    {
                        UseCookies = true,
                        CookieContainer = cookies,
                        Proxy = SetProxy(proxy)
                    }));

                    client.SendAsync(msg).Wait();

                    return cookies;
                }
                catch (Exception)
                {
                    currentTry += 1;
                }
            }

            return null;
        }

        private System.Net.CookieCollection GetAllCookies(ZennoLab.CommandCenter.CookieContainer container)
        {
            var allCookies = new CookieCollection();
            var domainTableField = container.GetType().GetRuntimeFields().FirstOrDefault(x => x.Name == "m_domainTable");
            var domains = (IDictionary)domainTableField.GetValue(container);

            foreach (var val in domains.Values)
            {
                var type = val.GetType().GetRuntimeFields().First(x => x.Name == "m_list");
                var values = (IDictionary)type.GetValue(val);

                foreach (CookieCollection cookies in values.Values)
                {
                    allCookies.Add(cookies);
                }
            }
            return allCookies;
        }

        private WebProxy SetProxy(string proxy)
        {
            if (string.IsNullOrEmpty(proxy)) return null;

            WebProxy wp;

            var split = proxy.Split('@');

            if (split.Length == 1)
            {
                wp = new WebProxy(proxy);
            }
            else
            {
                var credential = split[0].Split(':');
                var addres = split[1];

                wp = new WebProxy(addres)
                {
                    Credentials = new NetworkCredential
                    {
                        UserName = credential[0],
                        Password = credential[1]
                    }
                };
            }

            return wp;
        }
    }  
}
в 82 строке появляется ошибка Неявное преобразование типа "ZennoLab.CommandCenter.CookieContainer" в "System.Net.CookieContainer" невозможно". [Строка: 82; Cтолбец: 25]

И что бы я туда не вставлял - хоть ZennoLab.CommandCenter., хоть System.Net. - в любом случае даже на проверке синтаксиса выдает красные подчеркивания, и вываливает error-ы при выполнении.

Если будет возможность - помогите пожалуйста.
 
И что бы я туда не вставлял - хоть ZennoLab.CommandCenter., хоть System.Net. - в любом случае даже на проверке синтаксиса выдает красные подчеркивания, и вываливает error-ы при выполнении.
В ошибке же четко пишет в чем причина - Неявное преобразование типа.
Идет попытка преобразовать объект одного типа, к другому.

Ошибка возникла из за того, что в зенке в последних версиях появился свой CookieContainer.
И это не вот этот https://msdn.microsoft.com/ru-ru/library/system.net.cookiecontainer(v=vs.110).aspx
Названия одинаковы, классы разные, отсюда и ошибка. Поэтому надо прописывать полное имя для CookieContainer - System.Net.CookieContainer
Везде.

upload_2018-9-6_12-54-23.png


upload_2018-9-6_12-59-21.png


upload_2018-9-6_12-59-53.png


Это не класс зенолаба, а класс .net. Везде где такая хрень, надо заменить на System.Net.CookieContainer.

upload_2018-9-6_12-55-19.png


HttpClientHandler
https://msdn.microsoft.com/en-us/library/system.net.http.httpclienthandler(v=vs.118).aspx

Это класс вообще не знает о существовании класса CookieContainer в зенке.:-)
Ему нужен .net класс CookieContainer.
 
  • Спасибо
Реакции: swiniks и iBotovod
Ошибка возникла из за того, что в зенке в последних версиях появился свой CookieContainer.
вот блин. Я вижу что нестандартное поведение, но знаний не хватает понять почему.
После прописывания System.Net. все заработало.
СПАСИБО!
 
вот блин. Я вижу что нестандартное поведение, но знаний не хватает понять почему.
После прописывания System.Net. все заработало.
СПАСИБО!
Не могли бы выложить рабочий код? А то уже вроде всё сменил, но не работает(
Спасибо
 
Не могли бы выложить рабочий код? А то уже вроде всё сменил, но не работает(
Спасибо
Так запускается, но увы защиту не проходит! Если защиты нет отрабатывает без ошибок.
C#:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;


using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Collections;
using CloudFlareUtilities;


namespace ZennoLab.OwnCode
{
    public class CloudFlareBreaker
    {
        public string Address { get; set; }
        public string UserAgent { get; set; }
        public string Proxy { get; set; }
        public int MaxRetries { get; set; }

        private System.Net.CookieContainer _cookieContainer;

        public void Break()
        {
            _cookieContainer = GetCloudFlareCookies(Address, UserAgent, Proxy, MaxRetries);
        }

        public System.Net.CookieContainer GetCookieContainer()
        {
            return _cookieContainer;
        }

        public string GetCookieStr()
        {
            if (_cookieContainer == null) return null;

            var list = GetAllCookies(_cookieContainer)
                .Cast<Cookie>()
                .Select(c => c.Name + "=" + c.Value)
                .ToList();

            return string.Join(";", list);
        }

        private System.Net.CookieContainer GetCloudFlareCookies(string address, string userAgent, string proxy, int maxRetries)
        {
            var currentTry = 0;

            while (currentTry < maxRetries)
            {
                try
                {
                    var cookies = new System.Net.CookieContainer();

                    var msg = new HttpRequestMessage()
                    {
                        RequestUri = new Uri(address),
                        Method = HttpMethod.Get
                    };

                    msg.Headers.TryAddWithoutValidation("User-Agent", userAgent);

                    var client = new HttpClient(new ClearanceHandler(new HttpClientHandler
                    {
                        UseCookies = true,
                        CookieContainer = cookies,
                        Proxy = SetProxy(proxy)
                    }));

                    client.SendAsync(msg).Wait();

                    return cookies;
                }
                catch (Exception)
                {
                    currentTry += 1;
                }
            }

            // return null; // Вызывает ошибку! Выполнение действия CSharp OwnCode Ссылка на объект не указывает на экземпляр объекта.
            throw new System.Exception("CloudFlare - не пройдена!"); //Заменил вместо return null что бы null не вызывал ошибку.
        }

        private System.Net.CookieCollection GetAllCookies(System.Net.CookieContainer container)
        {
            var allCookies = new CookieCollection();
            var domainTableField = container.GetType().GetRuntimeFields().FirstOrDefault(x => x.Name == "m_domainTable");
            var domains = (IDictionary)domainTableField.GetValue(container);

            foreach (var val in domains.Values)
            {
                var type = val.GetType().GetRuntimeFields().First(x => x.Name == "m_list");
                var values = (IDictionary)type.GetValue(val);

                foreach (CookieCollection cookies in values.Values)
                {
                    allCookies.Add(cookies);
                }
            }
            return allCookies;
        }

        private WebProxy SetProxy(string proxy)
        {
            if (string.IsNullOrEmpty(proxy)) return null;

            WebProxy wp;

            var split = proxy.Split('@');

            if (split.Length == 1)
            {
                wp = new WebProxy(proxy);
            }
            else
            {
                var credential = split[0].Split(':');
                var addres = split[1];

                wp = new WebProxy(addres)
                {
                    Credentials = new NetworkCredential
                    {
                        UserName = credential[0],
                        Password = credential[1]
                    }
                };
            }

            return wp;
        }
    }
}
 
Последнее редактирование:
Так запускается, но увы защиту не проходит! Если защиты нет отрабатывает без ошибок.
C#:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;


using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Collections;
using CloudFlareUtilities;


namespace ZennoLab.OwnCode
{
    public class CloudFlareBreaker
    {
        public string Address { get; set; }
        public string UserAgent { get; set; }
        public string Proxy { get; set; }
        public int MaxRetries { get; set; }

        private System.Net.CookieContainer _cookieContainer;

        public void Break()
        {
            _cookieContainer = GetCloudFlareCookies(Address, UserAgent, Proxy, MaxRetries);
        }

        public System.Net.CookieContainer GetCookieContainer()
        {
            return _cookieContainer;
        }

        public string GetCookieStr()
        {
            if (_cookieContainer == null) return null;

            var list = GetAllCookies(_cookieContainer)
                .Cast<Cookie>()
                .Select(c => c.Name + "=" + c.Value)
                .ToList();

            return string.Join(";", list);
        }

        private System.Net.CookieContainer GetCloudFlareCookies(string address, string userAgent, string proxy, int maxRetries)
        {
            var currentTry = 0;

            while (currentTry < maxRetries)
            {
                try
                {
                    var cookies = new System.Net.CookieContainer();

                    var msg = new HttpRequestMessage()
                    {
                        RequestUri = new Uri(address),
                        Method = HttpMethod.Get
                    };

                    msg.Headers.TryAddWithoutValidation("User-Agent", userAgent);

                    var client = new HttpClient(new ClearanceHandler(new HttpClientHandler
                    {
                        UseCookies = true,
                        CookieContainer = cookies,
                        Proxy = SetProxy(proxy)
                    }));

                    client.SendAsync(msg).Wait();

                    return cookies;
                }
                catch (Exception)
                {
                    currentTry += 1;
                }
            }

            // return null; // Вызывает ошибку! Выполнение действия CSharp OwnCode Ссылка на объект не указывает на экземпляр объекта.
            throw new System.Exception("CloudFlare - не пройдена!"); //Заменил вместо return null что бы null не вызывал ошибку.
        }

        private System.Net.CookieCollection GetAllCookies(System.Net.CookieContainer container)
        {
            var allCookies = new CookieCollection();
            var domainTableField = container.GetType().GetRuntimeFields().FirstOrDefault(x => x.Name == "m_domainTable");
            var domains = (IDictionary)domainTableField.GetValue(container);

            foreach (var val in domains.Values)
            {
                var type = val.GetType().GetRuntimeFields().First(x => x.Name == "m_list");
                var values = (IDictionary)type.GetValue(val);

                foreach (CookieCollection cookies in values.Values)
                {
                    allCookies.Add(cookies);
                }
            }
            return allCookies;
        }

        private WebProxy SetProxy(string proxy)
        {
            if (string.IsNullOrEmpty(proxy)) return null;

            WebProxy wp;

            var split = proxy.Split('@');

            if (split.Length == 1)
            {
                wp = new WebProxy(proxy);
            }
            else
            {
                var credential = split[0].Split(':');
                var addres = split[1];

                wp = new WebProxy(addres)
                {
                    Credentials = new NetworkCredential
                    {
                        UserName = credential[0],
                        Password = credential[1]
                    }
                };
            }

            return wp;
        }
    }
}
Спасибо, нашел альтернативный вариант на форуме.
 
Продублируйте сюда, упростите жизнь тому, кто столкнется с таким же вопросом
Воспользовался этим решением. Немного более объемный проект (не в одном кубике), но работает и это главное. Спасибо автору за решение
 
сегодня понадобилось обойти защиту на одном сайте, и не получилось, пришлось через Jint сделать
так же подключил xNet, там можно и соксы использовать
проверил на нескольких сайтах, работает
 

Вложения

сегодня понадобилось обойти защиту на одном сайте, и не получилось, пришлось через Jint сделать
так же подключил xNet, там можно и соксы использовать
проверил на нескольких сайтах, работает
Альтернативную ссылку на архив предоставь пожалуйста, на облако (любое - mail.ru, yandex, mega ..)

aBHMVkq.png
 
Альтернативную ссылку на архив предоставь пожалуйста, на облако (любое - mail.ru, yandex, mega ..)

aBHMVkq.png

да сейчас хром всё блокирует почти ))
либы все открытые если знаешь как открывать, если есть сомнения то открой и просмотри их
 
сегодня понадобилось обойти защиту на одном сайте, и не получилось, пришлось через Jint сделать
так же подключил xNet, там можно и соксы использовать
проверил на нескольких сайтах, работает

Котяра не пашет твоя магия!

EKhNyVy.jpg
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)