0

libcurl을 사용하여 C 웹 사이트 크롤러를 작성했습니다. 원하는 경우 모든 웹 사이트의 텍스트 콘텐츠를 긁을 수 있습니다.c/libcurl을 통해 암호로 보호 된 뉴스 사이트 액세스

그러나 유효한 구독으로 대규모 뉴스 게시자와 같이 비밀번호로 보호 된 웹 사이트를 크롤링 할 수 있어야합니다. 그래서 우리는 이들 사이트에 대한 사용자 이름/비밀번호를 가지고 있습니다.

누구든지 libcurl을 사용하여이를 달성하기위한 조언을 제공 할 수 있습니까? libcurl 옵션에 사용자 이름/암호를 추가 할 수 있다는 것을 알고 있습니다. 나는이 일을하고 패스워드로 보호되는 올바른 페이지에 접근하는 것이 모든 것이 될 것이라고 생각했다. CURL 코드의 발췌 부분은 다음과 같습니다.

curl_easy_setopt(curlTestHandle, CURLOPT_URL, "mypasswordprotectedwebsiteurl"); 
curl_easy_setopt(curlTestHandle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); 
curl_easy_setopt(curlTestHandle, CURLOPT_FOLLOWLOCATION, 1); 
curl_easy_setopt(curlTestHandle, CURLOPT_MAXREDIRS, 5); 

curl_easy_setopt(curlTestHandle, CURLOPT_USERPWD, "myusername:mypassword"); 

res = curl_easy_perform(curlTestHandle); 
curl_easy_getinfo (curlTestHandle, CURLINFO_RESPONSE_CODE, &httpResponse); 

그러나 아마도 너무 단순화했을 것입니다. 아마도 일부 웹 사이트에서는 작동하지만 다른 사이트에서는 작동하지 않을 수 있습니다. 아무도 다하고 비슷한 것을 얻었습니까?

감사합니다,

마노

+1

파이썬 사용을 고려한다면, 이런 종류의 도구가 많이 있습니다. (Selinium, Mechanize 등.) 속도는 문제가 될 수 있지만, 일어나고 달리는 것이 더 쉬울 것입니다. – Indy9000

+0

모든 웹 사이트가 다릅니다. –

+0

Indeera의 의견을 묻습니다. 어떤 종류의 크로스 플랫폼/장치 호환성 (예 : 모바일 장치에서이 작업을 수행하는 경우)이 필요하지 않으면 Python을 사용하는 것이 좋습니다. 필자는 Python (Urllib/Urllib2/BeautifulSoup 사용)과 관련된 모든 화면 스크래핑을 프로토 타입 화하고 장치 사용시 libcurl로 이동해야하는 경우에만 프로토 타입을 작성합니다. – jmc

답변

0

상황에 따라 다르다. 사이트가 로그인 폼의 숨겨진 필드에 대해 다른 번호를 생성하면 HTML 파일을 구문 분석 (또는 간단한 검색)하여 숨겨진 필드를 요청에 추가해야합니다. 그렇지 않으면 코드에서 값을 하드 코딩 할 수 있습니다.

크롤링 할 웹 사이트의 수에 따라 달라집니다. 여러 웹 사이트가있는 경우 가장 좋은 방법은 HTML을 구문 분석 (또는 문자열 검색을 사용하여 양식을 읽는 것)하고 로그인 할 때 채울 필드를 얻는 것입니다.

또한 읽고 설정해야합니다 쿠키. 나는 libcurl이 이것을 쉽게 처리 할 수있는 함수를 가져야한다고 생각한다.

--- 나는 졸려서 주제를 달구어 놓고 있습니다. 이 게시물이 전혀 도움이되지 않으면 제거하라고하십시오.

+0

귀하의 제안은 유용한 조언을 제공해주었습니다. 감사합니다. 이 과정을 밟았 으면 인증 도중 응답 헤더에서 보낸 쿠키를 사용할 수있는 것처럼 보입니다. 그런 다음이를 저장하고 기본적으로 Paywall의 콘텐츠에 액세스하기위한 새로운 요청을 보내십시오. 그러나이 개념은 내가 찾은 모든 웹 사이트에서 작동하지 않는 것 같습니다! 그래서 나는 아직도 붙어있다! –

+0

내가 찾는 것은 인증 후 요청에서 전송 된 쿠키가 응답에서 전송 된 원래 쿠키보다 다릅니다 (실제로는 데이터가 더 많음)는 것입니다. –

+0

@ManojSolanki : 때때로 웹 사이트는 콘텐츠를 제공하기에 더 엄격한 조건을 가지고 있습니다. Firefox에서 Firebug와 같은 도구를 사용하거나 Safari/Chrome에 내장 된 개발자 도구를 사용하여 트래픽 및 헤더를 관찰 할 수 있습니다. 요청에서 해당 정보를 복제하고 서버가 요청을 처리하는지 여부를 확인할 수 있습니다. – nhahtdh

관련 문제