문제

여러분 중 일부는 아시다시피 C#으로 게시 할 수 있습니다. 즉, 웹 레퀴스트/응답으로 웹 사이트에서 "푸시"버튼을 "푸시"할 수 있습니다. 이제 JavaScript에서 작동하는 사이트에 버튼이 있습니다.

(function($j){
$j.data(document, 'maxPictureSize', 764327);
share_init();
})(jQuery.noConflict());

HttpRequests 또는 다른 종류의 라이브러리와 같은 C#에서 해당 기능 호출을 할 수있는 솔루션이 있습니까?

도움이 되었습니까?

해결책

서버가 누군가가 게시하는 버튼을 눌렀다 고 생각하고 웹 페이지에 게시물에 포함될 데이터를 보낸다고 생각하여 웹 페이지의 서버 "백엔드"를 조작하려는 프로그램이 있다고 가정합니다.

필요한 첫 번째 도구는입니다 Microsoft 네트워크 모니터 3.3, 또는 다른 네트워크 패킷 추적 도구. 이것을 사용하여 실제 웹 페이지에서 게시물을보십시오. Netmon (적어도)은 패킷을 HTTP 조각과 헤더로 분해하므로 무슨 일이 일어나고 있는지 쉽게 확인할 수 있습니다.

이제 실제 게시물이 전송하는 데이터와 데이터를 보내는 URL을 알 수 있습니다 (가능한 "쿼리 문자열" - 게시물에 비정상적입니다).

다음으로 동일한 URL에 동일한 종류의 게시물을 작성하려면 C#을 작성해야합니다. httpwebrequest/httpwebresponse에 대해 이미 알고 있으므로 자세히 설명하지 않을 것 같습니다. 당신은 당신의 netmon 흔적에서 컨텐츠 타입 헤더는 Application/x-www-form-urlencoded. 이것은 가장 자주 URL로 인코딩 된 HTML 양식의 데이터이므로 (이름과 같은) 데이터를 게시하기 전에 URL로 인코딩해야하며, 크기를 알아야합니다. 인코딩 된 데이터컨텐츠 길이. httputility.urlencode ()는이 인코딩에 사용하는 방법 중 하나입니다.

당신이 그것을 가지고 있다고 생각되면, 그것을 시도하고 netmon을 사용하여 게시물 요청과 서버의 응답을 검사하십시오. 미스터리 웹 페이지가 수행하는 일을 복제 할 때까지 계속하십시오.

다른 팁

OK 웹 브라우저 양식을 사용하여 페이지를로드합니다.

webBrowser.Navigate( url );

그런 다음 웹 브라우저 양식의 내용을 파일 또는 문자열에 저장합니다.

File.WriteAllText(@"c:\test\ajax_test.txt", webBrowser1.Document.Body.Parent.OuterHtml, Encoding.GetEncoding(webBrowser1.Document.Encoding));

이제 txt 파일을 보면 찾는 HTML 태그가 있어야합니다.

JavaScript를 사용하여 게시물을 수행 할 때도 버튼 제출과 같은 방식으로 작동하는 JS 어딘가에 게시물이 있습니다. JS 코드가 게시하는 장소를 파고 어떻게하는지 확인해야합니다. 그런 다음 C#에서 같은 게시물을 작성하십시오.

예를 들어 ASP.NET 자체 __Dopostback 함수를 사용하십시오

var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

입력 필드에 대한 몇 가지 값을 설정하고 제출을 수행하는 양식에 대해 파는 것을 알 수 있습니다. 기본적으로 입력에 대해 동일한 값을 채우고 동일한 양식을 제출해야하며 JS 제출이 직접 완료되었습니다.

버튼이 보내는 요청과 헤더를 캡처하고 시뮬레이션해야합니다. httpwebrequest. 당신은 또한 볼 수 있습니다 Watin 웹 사이트에서 사용자 작업을 자동화하려는 경우

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top