Ответы пользователя по тегу C#
  • Как ответ от сервера "\u0430\u0434\u0430\u043d\u0438" перевести в читабельный вид?

    @martensit Автор вопроса
    Regex.Unescape(unicodeString)
    Ответ написан
    Комментировать
  • Почему на c# не получается удалить базу данных после работы с ней?

    @martensit Автор вопроса
    SQLiteCommand cmd нужно было тоже в using обернуть...
    Ответ написан
    Комментировать
  • Как правильно запустить AuthenticateAsClient через http прокси?

    @martensit Автор вопроса
    public static TcpClient ProxyTcpClient(string targetHost, int targetPort, string httpProxyHost, int httpProxyPort)
    {
        const BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Instance;
        Uri proxyUri = new UriBuilder
        {
            Scheme = Uri.UriSchemeHttp,
            Host = httpProxyHost,
            Port = httpProxyPort
        }.Uri;
        Uri targetUri = new UriBuilder
        {
            Scheme = Uri.UriSchemeHttp,
            Host = targetHost,
            Port = targetPort
        }.Uri;
        WebProxy webProxy = new WebProxy(proxyUri, true);
        //webProxy.Credentials = new NetworkCredential(proxyUserName, proxyPassword);
        WebRequest request = WebRequest.Create(targetUri);
        request.Proxy = webProxy;
        request.Method = "CONNECT";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();
        Type responseType = responseStream.GetType();
        PropertyInfo connectionProperty = responseType.GetProperty("Connection", Flags);
        var connection = connectionProperty.GetValue(responseStream, null);
        Type connectionType = connection.GetType();
        PropertyInfo networkStreamProperty = connectionType.GetProperty("NetworkStream", Flags);
        NetworkStream networkStream = (NetworkStream)networkStreamProperty.GetValue(connection, null);
        Type nsType = networkStream.GetType();
        PropertyInfo socketProperty = nsType.GetProperty("Socket", Flags);
        Socket socket = (Socket)socketProperty.GetValue(networkStream, null);
        return new TcpClient { Client = socket };
    }
    
    public static void Connect()
    {
        TcpClient client = ProxyTcpClient("2ip.ru", 443, "192.168.56.2", 3128);
        var stream = new SslStream(client.GetStream());
        stream.AuthenticateAsClient("2ip.ru");
        string request = "GET https://2ip.ru HTTP/1.1" + Environment.NewLine +
        "Host: 2ip.ru" + Environment.NewLine +
        "Connection: keep-alive" + Environment.NewLine + Environment.NewLine;
        byte[] requestBytes = Encoding.ASCII.GetBytes(request);
        stream.Write(requestBytes, 0, requestBytes.Length);
        stream.Flush();
        var reader = new StreamReader(stream, Encoding.UTF8);
    }

    Вот решение
    Ответ написан
    Комментировать
  • Как правильно задать директорию для FirefoxProfile?

    @martensit Автор вопроса
    Нужно сначала создать этот профиль, а потом уже использовать. Запустить фаярфокс с префиксом -P (это нужно делать когда все инстансы браузера закрыты)

    firefox.exe -P

    и создать профиль в нужной папке.
    А потом уже использовать этот профиль в селениуме тем способом, который описан в вопросе.
    //спасибо @andrew со stackoverflow
    Ответ написан
    Комментировать
  • Как обратиться к IWebDriver из другого класса?

    @martensit Автор вопроса
    Нужно объявить WebDriver как глобальную переменную в нашем классе.
    Далее через имя класса легко ссылаться можно на него.

    public static IWebDriver wd;

    ссылаемся как
    StaticClassName.wd
    Ответ написан
    Комментировать
  • Где ошибка в SendMessage неактивному окну?

    @martensit Автор вопроса
    Все таки был неправильный HWnd указан.
    Для SendMessage нужно указывать HWnd не самого окна, а именно HWnd дочернего поля, куда нужно послать нажатие клавиши.
    Ответ написан
    Комментировать
  • Как в c# превратить string в массив с разделителем "\r\n"?

    @martensit Автор вопроса
    string[] mass = mystring.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
    Ответ написан
    Комментировать