Python 로그 인 사이트 상세 설명 및 인 스 턴 스

Python 로그 인 사이트 상세 설명 및 인 스 턴 스
대부분의 게시판 에 대해 우 리 는 그 중의 게시 물 을 캡 처 하여 분석 하려 면 먼저 로그 인 을 해 야 한다.그렇지 않 으 면 볼 수 없다.
이것 은 HTTP 프로 토 콜 이 무상 태(Stateless)프로 토 콜 이기 때 문 입 니 다.서버 는 현재 연결 을 요청 한 사용자 가 로그 인 했 는 지 어떻게 압 니까?두 가지 방법 이 있 습 니 다.
  • URI 에서 Session ID 를 명시 적 으로 사용 합 니 다.
  • 쿠키 를 이용 하면 한 사이트 에 로그 인 한 후 로 컬 에 쿠키 를 보관 하고 이 사 이 트 를 계속 방문 할 때 브 라 우 저 는 쿠키 를 주소 요청 과 함께 보 냅 니 다.
  • Python 은 상당히 풍부 한 모듈 을 제공 하기 때문에 이런 네트워크 조작 은 몇 마디 만 하면 완성 할 수 있다.저 는 QZZN 포럼 에 로그 인 한 것 을 예 로 들 면 사실상 아래 의 프로그램 은 거의 모든 PHPWind 유형의 포럼 이 적 용 됩 니 다.
    
    # -*- coding: GB2312 -*-
    
    from urllib import urlencode
    import cookielib, urllib2
    
    # cookie
    cj = cookielib.LWPCookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    urllib2.install_opener(opener)
    
    # Login
    user_data = {'pwuser': '     ',
           'pwpwd': '    ',
           'step':'2'
          }
    url_data = urlencode(user_data)
    login_r = opener.open("http://bbs.qzzn.com/login.php", url_data)
    
    
    몇몇 주석:
  • urllib 2 는 urllib 보다 고 급 스 러 운 모듈 로 쿠키 를 어떻게 사용 하 는 지 포함 되 어 있다.
  • urllib 2 에서 모든 클 라 이언 트 는 하나의 opener 로 추상 화 할 수 있 고 모든 opener 는 여러 개의 handler 를 추가 하여 기능 을 강화 할 수 있다.
  • opener 를 구성 할 때 HTTPCookieProcessor 를 handler 로 지정 하기 때문에 이 handler 는 Cookie 를 지원 합 니 다.
  • isntal 사용opener 후 urlopen 을 호출 할 때 이 opener 를 사용 합 니 다.
  • 쿠키 를 저장 할 필요 가 없다 면 cj 라 는 인 자 는 생략 할 수 있 습 니 다.
  • user_data 는 로그 인 에 필요 한 정 보 를 저장 합 니 다.포럼 에 로그 인 할 때 이 정 보 를 전달 하면 됩 니 다.
  • urlencode 기능 은 사전 userdata 인 코딩pwuser=username&pwpwd=password'의 형식 으로 프로그램 을 쉽게 읽 기 위해 서 입 니 다.
  • 마지막 문 제 는 pwuser,pwpwd 와 같은 이름 이 어디서 났 는 지 로그 인 이 필요 한 웹 페이지 를 분석 해 야 한 다 는 것 이다.우 리 는 일반적인 로그 인 인터페이스 가 하나의 폼 이라는 것 을 알 고 있 습 니 다.선택 은 다음 과 같 습 니 다.
    
    <form action="login.php?" method="post" name="login" onSubmit="this.submit.disabled = true;"> 
    <input type="hidden" value="" name="forward" /> 
    <input type="hidden" value="http://bbs.qzzn.com/index.php" name="jumpurl" /> 
    <input type="hidden" value="2" name="step" /> 
    ... 
    <td width="20%" onclick="document.login.pwuser.focus();"><input type="radio" name="lgt" value="0" checked />    <input type="radio" name="lgt" value="1" />UID</td> 
    <td><input class="input" type="text" maxLength="20" name="pwuser" size="40" tabindex="1" /> <a href="reg1ster.php" rel="external nofollow" >    </a></td> 
    <td>   </td> 
    <td><input class="input" type="password" maxLength="20" name="pwpwd" size="40" tabindex="2" /> <a href="sendpwd.php" rel="external nofollow" target="_blank">    </a></td> 
    ... 
    </form>
    
    
    여기 서 알 수 있 듯 이 우리 가 입력 해 야 할 사용자 이름 비밀 번 호 는 pwuser 와 pwpwd 이 고 step 는 로그 인(이것 은 시도 한 것)입 니 다.
    이 포럼 양식 은 post 방식 을 사용 하고 get 방식 이 라면 본 고의 방법 이 바 뀌 어야 한 다 는 것 을 알 게 되 었 습 니 다.직접 오픈 할 수 없 으 며 먼저 Request 를 한 다음 에 오픈 해 야 합 니 다.더 자세 한 건 매 뉴 얼 을 보 세 요.
    읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기