지난번에 WebClient를 사용하여 POST 요청을 제출하는 방법을 소개했는데 이번에는 다른 방법을 계속해서 소개하겠습니다
HttpWebRequest 및 HttpWebResponse
지난번에 소개 한 WebClient와 가장 큰 차이점은 HttpWebRequest가 더 유연하고 강력 하다는 점이라고 생각합니다 . 예를 들어 HttpWebRequest 는 Cookies를 지원 하지만 WebClient는 지원 하지 않습니다. 편리합니다.
보충:
WebClient는 쿠키가 기본적으로 문자열이기 때문에 서버에서 반환 된 헤더가 "SetCooie : xxx"인 한 쿠키를 조작 할 수 있으므로 반환 된 형식에 따라 처리됩니다 (그대로 반환 될 수 없습니다. 패킷을 캡처하고 형식을 분석 할 수 있음), 저장하고 HTTP 요청 헤더에 "Cookie : xxx"추가
먼저 Referer와 Cookie를 언급해야합니다.
Referer : 브라우저에서 HTTP 요청을 보낼 때 일반적으로 전달되는 헤더 정보입니다. 클릭 정보, 즉 해당 클릭을 계산하는 데 널리 사용됩니다. 따라서 일부 웹 사이트에서도이 속성을 사용하여 핫 링크를 방지합니다. 많은 경우 , 사진 만있는 경우이 원칙은 내부 커뮤니케이션을 제한하는 데 사용됩니다.
쿠키 : 일부 웹 사이트는 사용자의 신원을 식별하고 세션 추적을 수행하기 위해 사용자의 로컬 터미널에 데이터 (일반적으로 암호화 됨)를 저장합니다. 일반적으로 모든 사람이 로그인 할 때 사용합니다. 로그인 후 웹 사이트는 쿠키를 저장합니다. 로컬 컴퓨터는 귀하가 웹 사이트를 방문 할 때마다이 웹 사이트의 쿠키도 전송하며 서버는이를 사용하여 귀하의 신원을 확인합니다. 이는 중요한 정보이며 일부 해커는 쿠키를 도용하여 귀하의 계정에 침입합니다.
자, 이제 지정하겠습니다.
- HttpWebRequest 요청 = (HttpWebRequest) WebRequest.Create ( "POST 요청 주소" );
- request.CookieContainer = new CookieContainer ();
- CookieContainer cookie = request.CookieContainer;
-
- request.Referer =“http :
- request.Accept = "수락 : text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8" ;
- request.Headers [ "Accept-Language" ] = "zh-CN, zh; q = 0." ;
- request.Headers [ "Accept-Charset" ] = "GBK, utf-8; q = 0.7, *; q = 0.3" ;
- request.UserAgent = "User-Agent : Mozilla / 5.0 (Windows NT 5.1) AppleWebKit / 535.1 (Gecko와 같은 KHTML) Chrome / 14.0.835.202 Safari / 535.1" ;
- request.KeepAlive = true ;
-
- request.ContentType = "애플리케이션 / x-www-form-urlencoded" ;
- request.Method = "POST" ;
-
- Encoding encoding = Encoding.UTF8;
- byte[] postData = encoding.GetBytes(postDataStr);
- request.ContentLength = postData.Length;
- Stream requestStream = request.GetRequestStream();
- requestStream.Write(postData, 0, postData.Length);
-
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream responseStream = response.GetResponseStream();
-
- if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip"))
- {
- responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
- }
-
- StreamReader streamReader = new StreamReader (responseStream, encoding);
- 문자열 retString = streamReader.ReadToEnd ();
-
- streamReader.Close ();
- responseStream.Close ();
-
- 반환 retString;
물론, 나는 당신이 다른 사람의 웹 사이트에 해를 끼치는 일을하는 것이 아니라 단지 당신과 지식을 공유하고 있다는 점에 유의하십시오.
반대로 웹 개발자 는 클라이언트가 보낸 데이터가 항상 합법적이라고 믿을 수 없으며 다른 사람이 브라우저를 통해서만 웹 사이트에 액세스 할 수 있다고 가정 할 수 없다는 점을 이해해야 합니다. 위는 예입니다.
예방 조치로 인증 코드 는 대부분의 사람 을 막을 수 있습니다. 인증 코드로 모든 사람을 막을 수 있다고 생각 하지 마세요 . 무슨 일이 있었는지 알고 싶다면 다음에 귀를 기울 이세요.
전송 위치 : http://blog.csdn.net/xizhibei/article/details/6991987