Как получить ответ сервера,несмотря на 403 ошибку? - C#

Узнай цену своей работы

Формулировка задачи:

Собсно сабж,после некоего обновления на одном форуме при гет запросе(из программы) на форум выходит 403 ошибка(Forbidden(Запрещено)), однако отследив пакет Чарлесом, я увидел все данные,которые мне нужны. Есть ли какой-нибудь метод обойти 403 ошибку(не в плане от неё избавиться,а получить код страницы несмотря на ошибку). Заранее спасибо

Решение задачи: «Как получить ответ сервера,несмотря на 403 ошибку?»

textual
Листинг программы
public string Login(string login, string Password)
        {
 
            string param = "auth_key=880ea6a14ea49e853634fbdc5015a024&referer=http%3A%2F%2Fforum.worldoftanks.ru%2F&username=" + login + "&password=" + Password + "&rememberMe=1"; ;
            string request = "POST /index.php?app=core&module=global§ion=login&do=process HTTP/1.1\r\n" +
                "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4\r\n" +
                "Host: forum.worldoftanks.ru\r\n" +
                "Accept:text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n" +
                "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8\r\n" +
                "Accept-Encoding: gzip, deflate\r\n" +
                "Referer: http://forum.worldoftanks.ru/index.php?app=core&module=global§ion=login\r\n" +
                "Cookie: coppa=0; itemMarking_forums_items=eJxLtDKyqs60MjQxNbY0tAYyjA2NjU0sLQ2MrMGiJobGMFFTI3MjE-taXDA2iQvj; member_id=0; pass_hash=0; anonlogin=-1;\r\n" +
                "Connection: close\r\n\r\n" +
                param;
            // Подключение к серверу
            IPHostEntry hostEntry = Dns.GetHostEntry("forum.worldoftanks.ru");
            IPAddress address = hostEntry.AddressList[0];
            IPEndPoint ipe = new IPEndPoint(address, 80);
            Socket socket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            
 
            try
            {
                socket.Connect(ipe);
                if (socket.Connected)
                {
                    MessageBox.Show("Connected to " + ipe.ToString());
                }
                else
                {
                    MessageBox.Show("Can not connect...");
                }
            }
            catch (SocketException ex)
            {
                MessageBox.Show(ex.Message);
            }
            Thread.Sleep(2000);
            byte[] par = Encoding.ASCII.GetBytes(param);
            Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
            Byte[] bytesReceived = new Byte[1024];
 
            socket.Send(bytesSent, bytesSent.Length, 0);
            string page = "";
            int bytes = 0;
            do
            {
                bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0);
                page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
            }
            while (bytes > 0);
            {
                MessageBox.Show(page);
                return page;
 
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5
Похожие ответы