Socks5 с авторизацией

ModNick

Client
Регистрация
27.06.2016
Сообщения
33
Благодарностей
34
Баллы
18
Всем привет. Поискал на форуме инфу про авторизацию, нашел что соксы авторизуются по формату socks5://user:pass@proxy:port. Есть ли варианты использования, если в логине присутствует символ "@" (собачка) ? Возможности связаться с суппортом, для изменения логина нету. В мозилле все работает нормально. В зенке попробовал и через кубики и через код в браузере и чисто на запросах. Ответа нет, авторизация не проходит. Может есть какой нибудь способ?
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 545
Баллы
113

ModNick

Client
Регистрация
27.06.2016
Сообщения
33
Благодарностей
34
Баллы
18
Блин спасибо огромное! Работает! Если не трудно, подскажи как в коде формат прописывается? Вот пример моего запроса, формат socks5://login:pass@proxy:port не фурычит.


Код:
string proxy = "";
string useragent = project.Profile.UserAgent;
var cookieContainer = project.Profile.CookieContainer;

string response = ZennoPoster.HTTP.Request(InterfacesLibrary.Enums.Http.HttpMethod.GET, "https://2ip.ru", "", "", proxy, "", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, 15000, "", useragent, true, 5, new[]{ "" }, "", false, true, cookieContainer: cookieContainer);
 

ModNick

Client
Регистрация
27.06.2016
Сообщения
33
Благодарностей
34
Баллы
18
Вобщем открыл ZennoLab.CommandCenter.dll в надежде найти там что то полезное. Нашел несколько функций для запросов по пути ZennoLab.CommandCenter.ZennoPoster.HTTP и еще две отдельных для пост и гет. Функция отправки выглядит след. образом.
Код:
public static string Request(HttpMethod method, string url, string content, string contentPostingType = "application/x-www-form-urlencoded", string proxy = "", string Encoding = "UTF-8", ResponceType respType = 1, int Timeout = 0x7530, string Cookies = "", string UserAgent = "", bool UseRedirect = true, int MaxRedirectCount = 5, string[] AdditionalHeaders = null, string DownloadPath = null, bool UseOriginalUrl = false, bool throwExceptionOnError = true, ICookieContainer cookieContainer = null)
{
    string str = string.Empty;
    string error = string.Empty;
    bool shouldClose = ZennoPoster.ConnectToInstanceManagerService(out WcfKeeper<IInstanceManagerService> keeper, false);
    if (keeper != null)
    {
        switch (method)
        {
            case HttpMethod.GET:
                str = keeper.Service.HttpGet(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.POST:
                str = keeper.Service.HttpPost(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.PUT:
                str = keeper.Service.HttpPut(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.HEAD:
                str = keeper.Service.HttpHead(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.DELETE:
                str = keeper.Service.HttpDelete(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.OPTIONS:
                str = keeper.Service.HttpOptions(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.TRACE:
                str = keeper.Service.HttpTrace(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.PATCH:
                str = keeper.Service.HttpPatch(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;
        }
    }
    ZennoPoster.CloseConnectionWithInstanceManager(keeper, shouldClose);
    if (!throwExceptionOnError || string.IsNullOrEmpty(error))
    {
        return str;
    }
    Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(error);
    if (dictionary["ExceptionType"] == typeof(TimeoutException).Name)
    {
        RequestAbortedException exception1 = new RequestAbortedException {
            _dataString = str
        };
        throw exception1;
    }
    throw new Exception(dictionary["ExceptionMessage"]);
}


  public static string Request(HttpMethod method, string url, string content, string contentPostingType = "application/x-www-form-urlencoded", string proxy = "", string Encoding = "UTF-8", ResponceType respType = 1, int Timeout = 0x7530, string Cookies = "", string UserAgent = "", bool UseRedirect = true, int MaxRedirectCount = 5, string[] AdditionalHeaders = null, string DownloadPath = null, bool UseOriginalUrl = false, bool throwExceptionOnError = true, ICookieContainer cookieContainer = null)
{
    string str = string.Empty;
    string error = string.Empty;
    bool shouldClose = ZennoPoster.ConnectToInstanceManagerService(out WcfKeeper<IInstanceManagerService> keeper, false);
    if (keeper != null)
    {
        switch (method)
        {
            case HttpMethod.GET:
                str = keeper.Service.HttpGet(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.POST:
                str = keeper.Service.HttpPost(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.PUT:
                str = keeper.Service.HttpPut(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.HEAD:
                str = keeper.Service.HttpHead(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.DELETE:
                str = keeper.Service.HttpDelete(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.OPTIONS:
                str = keeper.Service.HttpOptions(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.TRACE:
                str = keeper.Service.HttpTrace(url, out error, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;

            case HttpMethod.PATCH:
                str = keeper.Service.HttpPatch(url, content, out error, contentPostingType, proxy, Encoding, respType, Timeout, Cookies, UserAgent, UseRedirect, MaxRedirectCount, AdditionalHeaders, DownloadPath, UseOriginalUrl, false, cookieContainer);
                break;
        }
    }
    ZennoPoster.CloseConnectionWithInstanceManager(keeper, shouldClose);
    if (!throwExceptionOnError || string.IsNullOrEmpty(error))
    {
        return str;
    }
    Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(error);
    if (dictionary["ExceptionType"] == typeof(TimeoutException).Name)
    {
        RequestAbortedException exception1 = new RequestAbortedException {
            _dataString = str
        };
        throw exception1;
    }
    throw new Exception(dictionary["ExceptionMessage"]);
}

Все функции наследуемые и корнями уходят куда то в Instance. Везде куда добрались руки proxy в формате string. Но как бы я не пробовал составить строку коннекта нету.
Уважаемые разработчики, подскажите пожалуйста как в коде использовать прокси с собачкой в логине. Возможно через enum или там какой то свой формат.
Или дайте кто нибудь функцию для использования в OwnCode. Хотя бы скажите какую dll ковырять.
 

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