本次用的网站是人人网
cookie简单介绍
"""
- cookie & session
- 由于http协议的无记忆性,人们为了弥补这个缺憾,所采用的一个补充协议
- cookie是发给用户(即http浏览器)的一段信息,session是保存在服务器上的对应的另一半信息,用来记录用户信息
- cookie和session的区别
- 存放位置不同
- cookie不安全
- session会保存服务器上一定时间,会过期
- 单个cookie保存数据不超过4K,很多浏览器限制一个站点最多保存20个
- session的存放位置
- 存在服务器端
- 一般情况,session是放在内存中或者数据库中
"""
from urllib import request
if __name__ == '__main__':
url = 'https://i.csdn.net/#/uc/profile'
rsq = request.urlopen(url)
html = rsq.read().decode("utf-8")
with open("rsp.html", "w") as f:
f.write(html)
上边是一个失败的案例 如果不放入cookie进不去
下边是一个成功的案例 放入了cookie 可以进去 然后返回
from urllib import request
if __name__ == '__main__':
url = "http://www.renren.com/970585682/profile"
headers = {
"Cookie": "anonymid=jv08b501-5m0yvp; depovince=HEN; _r01_=1; JSESSIONID=abcH02I0s3Fey9p7WFHPw; ick_login=79eb8010-7e8d-41a6-9e9e-ffd3442f9bbc; ick=a7cd4710-8896-42da-aba2-d60a7124f3b4; jebecookies=ba1aa5d4-a5c7-4103-ba46-cfed329bb990|||||; _de=83839D6246BE064853537152FAFEB306; p=762545a281c56bd1086f44e6809825782; first_login_flag=1; ln_uact=15225771396; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; t=6ea2155869f60958db550938cb0d61582; societyguester=6ea2155869f60958db550938cb0d61582; id=970585682; xnsid=9e7fa20f; ver=7.0; loginfrom=null; jebe_key=248c3c72-ae33-4570-8ce2-49aa9ecf4095%7C638486ed18fa6c27507eb7af2f54b9e1%7C1556413966996%7C1%7C1556413967099; wp_fold=0; XNESSESSIONID=f303f79d26e5; WebOnLineNotice_970585682=1"
}
req = request.Request(url, headers=headers)
rsp = request.urlopen(req)
html = rsp.read().decode()
with open("rsp.html", "w", encoding='utf-8') as f:
f.write(html)
整体和第一个失败案例没什么区别只是加入了cookie
"""
- 使用cookie登录
- 直接把cookie复制下来,然后手动放入请求头
- http模块包含一些关于cookie的模块,通过他们我们可以自动使用cookie
- CookieJar
- 管理存储cookie,向传出的http请求添加cookie
- cookie存储在内存中,CookieJar实例回收后cookie将消失
- FileCookieJar(filename, delayload=None, policy=None):
- 使用文件管理cookie
- filename是保存cookie的文件
- MozillaCookieJar(filename, delayload=None, policy=None):
- 创建mocilla浏览器cookie.txt兼容的FileCookieJar实例
- LwpCookieJar(filename, delayload=None, policy=None):
- 创建libwww-perl标准兼容的Set-Cookie3格式的FileCookieJar实例
- 他们的关系是:CookieJar-->FileCookieJar-->MozillaCookieJar-->LwpCookieJar
"""
from urllib import request, parse, error
from http import cookiejar
cookie = cookiejar.CookieJar()
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()
opener = request.build_opener(http_handler, https_handler, cookie_handler)
def login():
'''
负责初次登录
需要输入用户名密码,用来获取cookie凭证
:return:
'''
url = "http://www.renren.com/PLogin.do"
data = {
"email": '你的账号',
"password": '你的密码'
}
data = parse.urlencode(data)
req = request.Request(url, data=data.encode())
rsp = opener.open(req)
def gerHomePage():
url = 'http://www.renren.com/970585682/profile'
rsp = opener.open(url)
html = rsp.read().decode()
with open("rsp.html", "w", encoding='utf-8') as f:
f.write(html)
if __name__ == '__main__':
login()
gerHomePage()