컬을 사용하여 네트워크 요청을 자동화하시겠습니까?

컬을 사용하여 네트워크 요청을 자동화하시겠습니까?

직장에서 사용해야 하는 "회사" 시스템이 몇 가지 있습니다. 그 중 일부는 프레임, 팝업 등으로 인해 끔찍합니다.

나는 컬이나 비슷한 것을 사용하여 무언가를 자동화하려고 생각하고 있습니다. 로그인해서 하이퍼링크를 클릭하고 데이터를 설정한 다음 정보를 게시해야 합니다.

컬을 사용할 수 있나요? 아니면 Selenium과 같은 것을 사용하는 것이 더 나을까요?

답변1

간단한 경우다운로드페이지 내용을 사용하여곱슬또는얻다. 둘 다 HTTP를 통해 파일을 다운로드하도록 설계된 명령줄 도구이며 다양한 옵션이 있습니다. 귀하의 경우 이러한 도구를 브라우저처럼 보이게 만들고 싶을 수도 있습니다.Lutsky의 답변그리고펭귄 359의 답변이와 관련하여 유용한 몇 가지 컬 및 wget 옵션을 언급하십시오.

가끔 필요할 때로그인, 먼저 웹 브라우저에서 수동으로 로그인하는 것이 훨씬 쉽습니다.웹 브라우저 쿠키 내보내기(다음과 같이 확장됨모든 쿠키또는쿠키 내보내기Firefox가 도움이 될 수 있습니다).

당신이 필요하다면내용 분석일부 페이지 또는메일 양식, 컬 및 wget보다 더 고급 도구가 필요할 수 있습니다. Perl에는 몇 가지 좋은 도구가 있습니다.LWP(libwww)그리고HTML::TreeBuilder(HTML 트리)또는 표준 라이브러리가 있는 Python(특히httplib그리고htmllib).

더 알아보기복잡한 상호작용웹사이트가 있습니다. 참조는 Perl입니다.WWW::기계화. 이 Perl 라이브러리는 POST, 양식, 쿠키를 포함하여 웹 브라우저와 같은 웹 사이트와 상호 작용하기 위한 고급 기능을 정의하지만 Javascript는 정의하지 않습니다. Perl이 마음에 들지 않는다면 이 라이브러리에는 다른 언어의 유사한 기능을 모방한 것이 있습니다.파이썬 기계화그리고루비 기계화.

마지막으로 필요할 때자바스크립트에서 일반적인 접근 방식은 브라우저 자동화 프레임워크로 구동되는 웹 브라우저를 사용하는 것입니다.셀렌그리고바티에인기 있는 선택이기도 합니다.SeleniumRC 외에 JavaScript 그리기 후 콘텐츠가 포함된 웹 페이지를 얻을 수 있는 좋은 도구가 있습니까?

답변2

네, 컬을 사용하면 완전히 가능합니다. 가장 중요한 것은 컬을 사용하는 사이에 쿠키를 저장하고 다시 로드하는 것입니다 --cookie-jar. 필요한 경우 양식 데이터를 게시할 수도 있습니다. 나는 보통 Live HTTP Headers라는 Firefox 플러그인을 사용하여 웹사이트를 탐색할 때 어떤 일이 일어나는지 캡처합니다. 모든 헤더를 기록하고 모든 양식 게시물도 기록하므로 컬 사용 방법을 알아내려고 할 때 매우 유용합니다. 나는 다양한 컬 호출을 자동화하고 mktemp파이프와 임시 파일(에서 제공)을 사용하여 웹 페이지에서 일부 제한된 처리를 수행하는 bash 스크립트를 작성하지만 많은 웹 페이지 처리를 수행해야 하는 경우 일반적으로 LibWWW를 사용하여 Perl로 전환합니다.

답변3

제가 가장 좋아하는 것은 wget이므로 예를 들어 보겠습니다. 당신이 원하는 것은 브라우저 세션을 최대한 가깝게 복제하는 것이므로 관련 명령줄 인수를 사용하십시오. 필요한 것은 웹사이트가 귀하의 브라우저를 얼마나 철저하게 검사하는지에 따라 다릅니다. (sic)은 일반적으로 충분하지만, 및 --referer가 필요할 수도 있습니다 .--user-agent--load-cookies

wget이 기술은 기본적으로 브라우저 스푸핑입니다. 즉, 자신을 브라우저로 웹사이트에 표시 하려고 합니다 . 당신이 직면하게 될 가장 큰 문제는 당신이 제공한 예제 웹사이트에 나타나지 않는 보안 문자입니다. 또한, 사이트의 시간 정책(이 경우 45초)을 꼭 준수해주세요. 그렇지 않으면 차단될 수 있습니다.

아마아니요동일한 파일을 여러 세션에서 다운로드할 수 있습니다. 사이트에서는 특정 세션에 특정 파일에 대한 다운로드 권한을 부여합니다.

관련 정보