Как получить ответ сервера,несмотря на 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д