2013-07-30 4 views
1

제 3 자 사이트에서 여러 양식 작성을 자동화해야합니다. 이 사이트는 JavaScript로 작성되었습니다. 프로토콜은 HTTPS입니다. 나는 이것을 달성하기위한 3 가지 방법을 본다.자동으로 웹 양식 작성

  1. 브라우저에 마우스 클릭 및 키 누름을 보냅니다.
  2. 소켓을 사용하여 브라우저에서 서버로 전송되는 모든 데이터 (채워진 양식 포함)를 차단합니다. 형식을 파악하십시오. 브라우저를 사용하지 않고 서버와 통신을 복제합니다.
  3. 맞춤 브라우저 클래스를 사용하십시오.

모든 설명, 예? 예 : 어떤 수업을 3 번에해야합니까?

기본 HTML 이외의 웹 프로그래밍 경험이 없습니다. 광범위한 C++ (MFC), Java 및 VB (Excel 매크로) 경험이 있습니다.

감사합니다.

업데이트/명시. 현재 동료는 사이트에 가야하고 이름/비밀번호를 입력하고 링크 복사 - 붙여 넣기 - 제출 - 반복을 9000 회 이상 반복해야합니다. 대신 Excel 스프레드 시트를 작성하고 사이트의 모든 양식을 채울 단일 버튼을 클릭 할 수 있기를 원합니다.

업데이트 # 2. HTTPS의 문제는 "데이터를 복제하는 가장 쉬운 방법 인 데이터를 스니핑 할 수 없다"는 것입니다 - 여기가 합의입니까? 그렇다면 cURL을 사용하여 서버 요청을 올바르게 구성하기가 어려울 수 있습니다. 나는 그다지 테스트 할 수 없다 : 이것은 꽤 많은 라이브 데이터이며 나중에 수정하는 것은 어렵다.

그래서 PhantomJS, Selenium ... WatiN은 어떻습니까? 그리고 다시 당신의 생각에 감사드립니다!

+0

_' 타사 사이트에서 여러 양식 작성을 자동화해야합니다 .'_ 어떤 방식으로 자동화합니까? 사용자가 웹 브라우저에서 열어 본 양식을 작성하거나 독립 실행 형 클라이언트 응용 프로그램으로 백그라운드에서 웹 요청을 수행하려면 (브라우저가 필요하지 않음)? –

+0

후자입니다. 게시물을 업데이트했습니다. – user1334767

+0

그런 다음 방법 2와 일부 lib (예 : Curl)를 사용하는 것이 가장 좋은 선택입니다. –

답변

2

1 또는 3 :이 작업을 수행하려면 PhantomJS을 사용할 수 있습니다. 마우스 클릭이나 키 누르기를 정확하게 보내지는 않습니다. JavaScript로 제어되는 헤드리스 WebKit 브라우저입니다. wiki에는 양식 입력 자동화의 유용한 예제가 있습니다.

2 : 양식의 구조를 알고 있다면, 당신은 컬 튜토리얼에서 cURL

예를 통해 POST 요청으로 양식 데이터를 보낼 수 있습니다

<form method="POST" action="junk.cgi"> 
    <input type=text name="birthyear"> 
    <input type=submit name=press value=" OK "> 
</form> 

이는 curl 명령이 될 것입니다 :

curl --data "birthyear=1905&press=%20OK%20" http://example.com

+0

# 2 : 나는 "형식의 구조"를 정말로 모른다. 나는 분명히 브라우저에서 폼의 소스를 볼 수 있지만 자바 스크립트 (내가 모르는)에있다. 또한 프로토콜은 HTTPS입니다. – user1334767

+0

질문에 양식 HTML을 추가 할 수 있습니까? 'JavaScript에 있습니다'라는 것이 무슨 뜻인지 잘 모르겠습니다. JavaScript를 사용하여 HTML을 생성합니까? 아니면 폼이 자바 스크립트를 통해 검증/제출 되었습니까? 그리고 예, cURL은 HTTPS를 지원합니다. –

+0

HTTPS의 유일한 문제는 데이터를 복제하는 가장 쉬운 방법 인 데이터를 스니핑 할 수 없다는 것입니다. – doron

2

때 중단 될 수 있습니다 (사이트 소유자의 지식없이) 일방적으로 이렇게 웹 사이트가 업데이트됩니다 (사이트 소유자가 원하는대로 변경할 수 있기 때문에 원하는대로 변경할 수 있습니다).이 외에도 웹 사이트의 서비스 약관을 위반했을 수 있습니다.

가장 좋은 방법은 웹 사이트 소유자에게 연락하여 자동으로 양식 데이터를 웹 사이트에 보내는 방법을 알려주는 것입니다. 그들이 API를 제공한다면 API가 안정적 일 것이라는 확신을 가져야합니다.

+0

옵션이 없습니다. 그들은 너무 탐욕 스럽다. – user1334767

0

셀레늄 (http://docs.seleniumhq.org/)을 확인해야합니다. Selenium IDE (Firefox에서만 작동) 또는 WebDriver를 사용하여 테스트를 자동화 할 수 있습니다 (Java 또는 Python 사용).

IDE를 사용하면 "클릭"및 "키 누름"을 사용하여 고유 한 매크로를 만들 수 있습니다. @doron이 말한대로 웹 사이트의 서비스 약관을 숙지하시기 바랍니다. 셀레늄을 사용하면 서버에 정중하게 데이터를 보내기 위해 시간 초과를 추가 할 수 있습니다.

1

"브라우저가없는"방법을 권장합니다 ... g-makulik이 제안한 것처럼 컬을 사용하는 경우 전체를 배치/스크립트 할 수 있습니다. 암호화가 필요하지 않으면 간단한 TCP 소켓과 기본 HTTP 헤더를 모방하기 쉽습니다 (트래픽이 자신이하는 일을 볼 수 있습니다). SSL/TLS라면 브라우저의 개발자 도구를 사용하여 헤더를 살펴본 다음 OpenSSL 또는 Windows API를 사용하여 암호화를 처리 할 수 ​​있습니다.

1

품질 보증 에이전트 (http://qaagent.com)를 사용해보세요. Chrome에서만 작동하며 (javascript 및 jQuery를 사용하여 언급 한 자동 작업을 쉽게 개발할 수 있습니다.)