>백엔드 개발 >파이썬 튜토리얼 >cookielib 모듈을 사용하여 쿠키를 조작하는 방법에 대한 Python 튜토리얼

cookielib 모듈을 사용하여 쿠키를 조작하는 방법에 대한 Python 튜토리얼

WBOY
WBOY원래의
2016-08-04 08:55:481166검색

Cookielib는 쿠키를 자동으로 처리하는 모듈입니다. 크롤러와 같은 기술을 사용할 때 쿠키를 저장해야 하는 경우, cookielib를 사용하면 절반의 노력으로 두 배의 결과를 얻을 수 있습니다! 그의 가장 일반적인 파트너 모듈은 Python의 urllib 및 request입니다.

핵심수업
1.쿠키
이 클래스는 Netscape 및 RFC 2965 쿠키에서 정의한 쿠키 표준을 구현하며 기본적으로 특정 쿠키 데이터 조각으로 이해될 수 있습니다.
코드의 일부는 다음과 같습니다. 많은 속성이 친숙해 보입니까?

    self.domain_initial_dot = domain_initial_dot
    self.path = path
    self.path_specified = path_specified
    self.secure = secure
    self.expires = expires
    self.discard = discard
    self.comment = comment
    self.comment_url = comment_url
    self.rfc2109 = rfc2109

2.쿠키정책
이 클래스의 주요 기능은 쿠키를 보내고 받는 것입니다. 즉, 올바른 쿠키가 해당 도메인 이름으로 전송되는지 확인하고 그 반대의 경우도 마찬가지입니다.
3.기본 쿠키 정책
이 클래스는 CookiePolicy 인터페이스를 구현합니다.
4.쿠키병
CookieJar는 쿠키의 모음으로, 많은 Cookie 클래스를 포함할 수 있으며 당사의 주요 작업 객체입니다. 내부에는 보다 세부적인 작업을 지원하는 일련의 메서드가 있습니다!
5.파일쿠키병
이 클래스는 CookieJar에서 상속됩니다. CookieJar는 메모리에서만 수명 주기를 완료합니다. FileCookieJar의 하위 클래스는 데이터 지속성을 달성할 수 있으며 저장, 로드 및 되돌리기의 세 가지 인터페이스를 정의합니다.
6.MozillaCookieJar 및 LWPCookieJar
두 개의 구현 클래스, 상속 관계는 다음과 같습니다.

2016712155141137.png (702×330)

예: Renren에 로그인
Firefox에서 httpFox 플러그인을 사용하여 Renren.com에 로그인할 때 필요한 POST 주소를 찾으세요: http://www.renren.com/ajaxLogin

2016712155529959.png (621×69)

그리고 게시해야 하는 데이터에 이메일과 비밀번호가 포함되어 있는 것을 확인했습니다
Python은 cookielib를 통해 쿠키를 처리합니다. 다음은 간단한 코드입니다

>>> import urllib
>>> import urllib2,cookielib
>>> login_page = "http://www.renren.com/ajaxLogin"
>>> cj = cookielib.CookieJar()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> opener.add_handler = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]
>>> data = urllib.urlencode({"email":'username',"password":'password'}) 
>>> opener.open(login_page,data)
<addinfourl at 53653216 whose fp = <socket._fileobject object at 0x03307B70>>
>>> if cj:
... for index,cookie in enumerate(cj):
...  print index,':',cookie
...  
0 : <Cookie _de=90D533AE20EB964CA96710977F452897 for .renren.com/>
1 : <Cookie anonymid=hlehtdzg-8359yw for .renren.com/>
2 : <Cookie first_login_flag=1 for .renren.com/>
3 : <Cookie id=224967207 for .renren.com/>
4 : <Cookie loginfrom=null for .renren.com/>
5 : <Cookie p=9beb60859c004bcaf0a32ff2c973473d7 for .renren.com/>
6 : <Cookie societyguester=86b6a6006002ab6316f708521ab50bfc7 for .renren.com/>
7 : <Cookie t=86b6a6006002ab6316f708521ab50bfc7 for .renren.com/>
8 : <Cookie xnsid=fa53da51 for .renren.com/>
9 : <Cookie t=30af9ffe774f4d6f242e92da1ccd6670 for .renren.com/xtalk/>
10 : <Cookie feedType=224967207_hot for .www.renren.com/>
11 : <Cookie JSESSIONID=abc3IP9kEhTExblxcRfeu for www.renren.com/>
>>>

firebug나 httpFox에서 얻은 쿠키와 비교할 수 있습니다. 값이 일치하지 않을 수 있지만 키는 기본적으로 로그인할 때마다 일치하지 않아야 합니다.

2016712155304292.jpg (596×374)

또한 fidder를 사용하여 쿠키 없이 POST 데이터 전송을 시뮬레이션하려고 시도했지만 원하는 반환 값을 얻지 못했습니다.

2016712155344220.jpg (782×338)

쿠키 정보를 추가하신 후 정상적으로 홈페이지로 이동하실 수 있습니다

2016712155406504.jpg (924×226)

2016712155618471.jpg (930×355)

자, 우리는 기본적으로 Python에서 로그인 정보를 보내기 위해 쿠키를 사용하는 방법을 이해했습니다. 이제 Renren.com에 로그인하기 위한 작은 스크립트를 작성해 보겠습니다.

#encoding=utf-8
import urllib2
import urllib
import cookielib
def renrenBrower(url,user,password):
  login_page = "http://www.renren.com/ajaxLogin"
  try:    
    cj = cookielib.CookieJar()    
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    opener.addheaders = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]
    data = urllib.urlencode({"email":user,"password":password})
    opener.open(login_page,data)
    op=opener.open(url)
    data= op.read()
    return data
  except Exception,e:
    print str(e)
print renrenBrower("http://www.renren.com/home","用户名","密码")

이런 식으로 홈페이지에 정보를 표시할 수 있습니다. 실제로 로그인 후에도 계속해서 스크립트를 작성하여 친구의 최신 소식 등 원하는 정보를 얻을 수 있습니다. 너무 많아요~

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.