curl을 사용하여 웹 요청을 자동화 하시겠습니까?


13

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

컬이나 그와 비슷한 것을 사용하여 물건을 자동화하는 것에 대해 생각하고있었습니다. 로그인이 필요하고 하이퍼 링크를 클릭하고 데이터를 설정 한 후 게시를해야합니다.

컬을 사용할 수 있습니까? 아니면 셀레늄과 같은 것을 사용하는 것이 더 좋을까요?


1
파이썬의 zope.testbrowser 를 사용합니다.
phunehehe

2
자바 스크립트를 사용해야합니까?
intuited


2
세션을 사용하는 것은 각 요청과 함께 세션 ID를 보내는 것입니다. 쿠키 또는 GET 매개 변수에 있습니다. wget그리고 curl브라우저는 또한 하나를 사용하는 경우 그래서 그냥 다운로 지정하기에 충분 될 수있다, 넷스케이프 쿠키 파일을 사용할 수 있습니다. 어떤 종류의 브라우저를 사용하고 있습니까?
manatwork

2
그와 함께 간단한 해결책을 찾지 마십시오. Firefox와 Chrome은 SQLite를 사용하며 Opera에는 이진 데이터 파일 형식이 있습니다. 세션 ID를 검색하여 수동으로 다운로더에게 전달해야합니다.
manatwork

답변:


13

네, 컬로 완전히 가능합니다. curl을 사용하는 사이에 쿠키를 저장하고 다시로드하는 것이 가장 중요 --cookie-jar합니다. 필요에 따라 양식 데이터를 게시 할 수도 있습니다. 웹 사이트를 탐색 할 때 발생하는 상황을 캡처하기 위해 보통 Live HTTP Headers라는 Firefox 애드온을 사용합니다. 그것은 모든 헤더를 기록 할뿐만 아니라 curl로 수행 할 작업을 파악할 때 매우 유용한 양식 게시물을 기록합니다. 나는 다양한 curl 호출을 자동화하는 bash 스크립트를 작성하고 파이프와 임시 파일 (의 제공 mktemp)을 사용하여 웹 페이지에서 제한된 처리를 수행하지만 많은 웹 페이지 처리를 해야하는 경우 일반적으로 LibWW를 사용하여 Perl로 전환합니다.


Firefox Live HTTP 헤더 외에도 Safari와 Chrome 모두 Web Inspector에서 객체별로 분류 된 헤더를 표시 할 수 있습니다.
bahamat

15

페이지의 내용 을 다운로드 하는 간단한 경우 curl 또는 wget을 사용하십시오 . 둘 다 HTTP를 통해 파일을 다운로드하도록 설계된 명령 줄 도구이며 많은 옵션이 있습니다. 귀하의 경우 이러한 도구를 브라우저처럼 보이게 만들어야 할 수도 있습니다. lutzky의 답변penguin359의 답변 은 그 점에서 유용한 curl 및 wget 옵션을 언급합니다.

때때로 로그인 해야 할 때 먼저 웹 브라우저에서 수동으로 로그인 한 다음 웹 브라우저의 쿠키내보내는 것이 훨씬 쉽습니다 ( allcookies 또는 Firefox 용 쿠키 내보내기 와 같은 확장 프로그램 이 도움이 될 수 있음).

일부 페이지 의 내용분석 하거나 양식을 게시 해야하는 경우 말리거나 wget보다 더 멋진 도구가 필요할 수 있습니다. 좋은 도구로는 Perl LWP(libwww)HTML::TreeBuilder(HTML-Tree) 또는 표준 라이브러리 (특히 httplibhtmllib )가있는 Python이 있습니다 .

웹 사이트와의 보다 복잡한 상호 작용 을위한 참조는 Perl의 WWW :: Mechanize 입니다. 이 Perl 라이브러리는 POST, 폼, 쿠키는 포함하지만 웹 스크립트는 포함하지 않지만 웹 브라우저와 같은 웹 사이트와 상호 작용하기위한 고급 기능을 정의합니다. Perl이 차 한잔이 아닌 경우이 라이브러리에는 Python mechanizeRuby Mechanize 와 같은 다른 언어로 유사한 기능을 가진 모방이 있습니다 .

마지막으로 Javascript 가 필요할 때 일반적인 방법은 브라우저 자동화 프레임 워크에 의해 구동되는 웹 브라우저를 사용하는 것입니다. 셀레늄Watir 가 인기있는 선택입니다. 또한 참조 콘텐츠를 자바 스크립트에 의해 후 그린을 포함한 웹 페이지를 가져올 수 SeleniumRC 외에 어떤 좋은 도구가 있습니까?


6

내가 가장 좋아하는 것은 wget이므로 이에 대한 예를 들어 보겠습니다. 브라우저 세션을 가능한 한 가깝게 복제하기 때문에 관련 명령 줄 인수를 사용하십시오. 필요한 것은 사이트가 브라우저를 얼마나 철저하게 확인하는지에 달려 있습니다. --referer일반적으로 충분하지만 --user-agent및이 필요할 수도 있습니다 --load-cookies.

이 기술은 기본적으로 브라우저 스푸핑 wget입니다. 브라우저로 사이트에 자신을 표시 하려고 합니다. 가장 큰 문제는 CAPTCHA이며 이는 귀하가 제공 한 예제 사이트에없는 것입니다. 또한 사이트의 타이밍 정책 (이 경우 45 초)을 준수하지 않으면 차단 될 수 있습니다.

그것은 아마 하지 특정 세션에 특정 파일에 대한 권한을 다운로드 사이트 보조금 - 다른 세션에서 동일한 파일을 다운로드 할 수.


포괄적 인 고려 사항이있는 정답입니다. 감사합니다
xiaohan2012 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.