제3자를 대신하여 비밀번호로 보호된 사이트를 스크래핑하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/801115

문제

나는 당신의 판타지 야구팀을 분석하고 권장 조치를 하루에도 여러 번씩 알려주는 프로그램을 작성하고 싶습니다.문제는 당신이 내 사이트에서 판타지 야구를 하고 있는 것이 아니라 야후, CBS, ESPN 등에서 플레이하고 있다는 것입니다.

대부분의 사이트에서 판타지 팀과 리그는 공개되지 않으므로 리그에 있는 팀을 보려면 로그인하고 리그 회원이어야 합니다.

나에게 필요한 것은 각 사이트의 팀 페이지를 내 서버로 전송하기 위한 일반 HTML뿐입니다. 그러면 서버에서 파일을 구문 분석 및 분석하고 사용자 알림을 보낼 수 있습니다.

문제는 이 데이터를 내 서버로 쉽게 가져오려면 사용자 이름/비밀번호 조합이 필요하다는 것입니다. 언제 나에겐 꼭 필요한데, 자신의 yahoo/espn/cbs 비밀번호를 나에게 맡기고 싶어하지 않는 분들이 많을 것 같아요.

나는 이 문제를 해결하기 위해 몇 가지 가능한 방법을 생각해 냈습니다.

  1. 가장 확실한 방법은 팀이 호스팅되는 사이트에 대한 자격 증명을 요청하는 것입니다.그런 다음 프로그래밍 방식으로 로그인하여 필요한 데이터를 요청할 수 있었습니다.나는 많은 사람들이 나에게 자신의 자격 증명을 제공하는 데 편안함을 느낄 것이라고 생각하지만 그들 중 상당수는 그다지 많지 않습니다.

  2. 사용자가 다운로드할 데스크톱 클라이언트를 작성합니다.클라이언트는 자격 증명을 요구하지만 기본적으로 서버 기반 버전에서 수행하는 것과 정확히 동일한 작업을 수행하고 로그인하여 페이지를 요청하고 페이지를 내 서버로 다시 보낼 수 있습니다.차이점은 비밀번호가 데스크탑을 떠날 필요가 없다는 것입니다.이 방법이 작동하려면 컴퓨터가 켜져 있어야 하고 이 프로그램이 실행되어야 합니다.

  3. 필요한 페이지로 이동하는 브라우저 추가 기능을 작성하고, 이전 로그인에서 저장된 쿠키를 사용하여 사이트에 로그인하고, 페이지를 내 서버로 다시 보냅니다.내 소프트웨어에서 비밀번호를 요구할 필요는 없지만 쿠키가 만료되면 당황스럽고 브라우저 추가 기능에 대해 많이 알지 못합니다.

다른 옵션이 있다고 확신하지만 이것이 지금까지 제가 생각해낸 것입니다.

두 가지 질문이 있습니다.1.이러한 유형의 작업에 대한 다른 가능성은 무엇입니까?2.사람들이 나에게 야후(예를 들어) 비밀번호를 알려주기를 꺼린다고 과대평가하고 있는 걸까요?위의 옵션 (1)이 확실한 선택입니까?

댓글에서 야후 파이프를 사용해 보라는 제안이 있었고, 그것이 유망한 제안처럼 보였기 때문에 조금 살펴보았습니다.지금 살펴보니 이것, 나는 그것이 선택 사항이라고 생각하지 않습니다.그래서 저는 옵션 1을 택할 것 같습니다.

도움이 되었습니까?

해결책

이것은 제가 몇 년 전에 같은 일을 하고 싶었을 때 씨름했던 문제입니다.우리 사이트는 http://benchcoach.com 우리가 고려한 옵션은 다음과 같습니다.

원래 우리는 사용자의 자격 증명과 로그인을 얻는 것을 고려했습니다.그런 다음 로그인하여 리그 및 팀 정보를 긁어냅니다.문제는 다양한 서비스 약관을 여러 번 읽은 후에 이것이 확실히 서비스 약관을 위반한다는 것입니다.게다가 야후!확실히 우리가 고려하고 있던 사이트 중 하나였으며 그 사용자는 이메일(민감한 데이터에 액세스할 수 있는 곳)과 Yahoo!지갑.또한 Yahoo/ESPN/CBS가 IP 주소로 프로그래밍 방식 로그인을 차단하는 것은 매우 사소한 일입니다.

우리가 결정한 해결책(100% 만족스럽지는 않지만 작동하는 것 같습니다)은 사용자에게 현재 HTML 페이지를 서버에 게시하여 데이터를 구문 분석할 수 있는 북마크릿(맛있는, digg 또는 reddit과 같은)을 설치하도록 요청하는 것이었습니다. 데이터베이스를 로드합니다.그들이 여전히 Yahoo/ESPN/CBS 계정에 로그인되어 있는 경우 우리는 그들을 해당 페이지로 직접 안내할 것이며, 그렇지 않으면 해당 사이트에서 인증을 요청하는 메시지를 표시할 것입니다.북마크를 한 번 더 클릭하면 페이지가 서버에 게시됩니다.

이 접근 방식의 장점은 누구의 자격 증명도 수집하지 않으므로 보안에 대한 우려가 완화된다는 것입니다.둘째, Yahoo/ESPN/CBS는 서버에 직접 연결하지 않고 사용자 브라우저가 브라우저의 콘텐츠를 서버에 게시하므로 Yahoo/ESPN/CBS가 서비스에 대한 액세스를 차단하는 것이 불가능합니다.

문제는 우리 사이트에 페이지를 게시하는 데 2번의 클릭이 필요하다는 것입니다.일대일 리그의 경우 3~4페이지가 필요하므로 사용자가 리그를 서버에 동기화하는 데 6~8번의 클릭이 필요합니다.우리는 이에 대한 옵션을 아직 검토 중입니다.

한 가지 중요한 점은 1년 전 컨퍼런스에서 Yahoo Fantasy Football 사이트의 제품 관리자를 우연히 만났다는 것입니다.우리는 Yahoo 데이터를 얻는 방법에 대해 이야기했고 그는 자격 증명을 얻는 것이 TOS를 위반하고 우리를 막을 수 있음을 확인했습니다.나는 그들이 그렇게 하지 않았을 것이라고 생각하지만, 이것을 개발하기 위해 시간과 에너지를 투자하기가 어려웠을 것이고 그들이 우리 사이트를 차단하고 계정을 폐쇄하여 사용자를 화나게 만들었을 것입니다.

다른 팁

예를 들어 야후 파이프와 함께 잠재적으로 더 복잡한 답변을 수행 할 수 있습니다.

가설 적으로, 당신은 사용자에게 자격 증명을 유발하는 파이프를 만들고 스크랩 된 데이터를 포함하는 URL을 제공합니다. 그들은 사이트 에이 URL을 입력하고 자격 증명을 직접 제공 할 필요가 없습니다. 더 나은 것은 보안 의식을 위해 정보를 입력하기 전에 파이프가 실제로 무엇을하고 있는지 조사 할 수있을 것입니다.

단점은 복잡성이 증가하고 (파이프를 작성하고 유지해야 함). 말하면, 사이트에서 게시 된 파이프에 직접 링크를 제공하여 가능한 한 쉽게 물건을 만들 수 있습니다.

옵션 1은 명백한 선택입니다. 귀하의 사이트를 신뢰하는 사람들은 세부 사항을 제공합니다. 화면 스크래핑 중에 다른 사이트에 로그인 할 수있는 다른 방법은 없습니다.

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