python爬虫之使用静态Cookie模拟用户登录

首先介绍下Cookie内容,什么是Cookie。Cookie的引文原意是“点心”,它是在客户端访问Web服务器时,服务器在客户端硬C盘上存放的信息,好像是服务器发送给客户的“点心”。服务器可以根据Cookie来跟踪客户状态,这对于需C要区别客户的场合(如电子商务)特别有用。当客户端首次请求访问服务器时,服务器先在客户端存放包含该客户的相关信息的Cookie,以后客户端每次请求访问服务器时,都会在HTTP请求数据中包含Cookie,服务器解析HTTP请求中的Cookie,就能由此获得关于客户的相关信息。下面是cookie产生和使用过程

客户端发送一个http请求到服务器端 服务器端发送一个http响应到客户端,其中包含Set->Cookie头部 客户端发送一个http请求到服务器端,其中包含Cookie头部 服务器端发送一个http响应到客户端

在这里插入图片描述

格式

Set-Cookie: NAME=VALUE;Expires/Max-age=DATE;Path=PATH; Domain=DOMAIN_NAME; SECURE

VALUE:cookie 的值
Expires:cookie 的过期时间
Path:cookic 作用的路径
Domain:cookie 作用的域名
SECURE:是否只在 https 协议下起作用

在我们浏览器中,我们可以通过开发者模式查看cookie,比如我现在查看CSDN上保存的cookie
在这里插入图片描述
补全了cookie的内容后,现在开始正式内容。下面将以访问人人网的http://www.renren.com/880151247/profile为例,如果我们不使用cookie时,通过会怎么样,我将获取的内容保存到本地的index.html文件中,执行下面的代码:

url = "http://www.renren.com/880151247/profile"


headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36",
}
con = request.Request(url,headers=headers)
re = request.urlopen(con)
with open("index.html", "w", encoding="utf-8") as f:
    count = f.write(re.read().decode("utf-8"))
    print(count)

获取的内容烂七八糟,但是能够发现这是人人网的登录或者注册界面,这就是因为在访问http://www.renren.com/880151247/profile网址时,服务器没有查找到cookie参数,默认为是非法访问,然后直接跳转到登录界面,让用户登录才能进入,如果我们使用浏览器打开,也是下面的现象
在这里插入图片描述

下面将在代码中使用我使用浏览器登录人人网后,看到到的cookie进行登录。

from urllib import request

url = "http://www.renren.com/880151247/profile"


headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36",
    "Cookie": "anonymid=k8z4m6vqmanbx1; depovince=ZGQT; _r01_=1; ick_login=54ab843c-0148-452e-876f-1000750fee60; taihe_bi_sdk_uid=be815781c6ed0e878618286dd0cb9c95; taihe_bi_sdk_session=09c5723e0fb4ab2b49ad72ac07238759; t=1ceade902ec4772900546b6e1e188c3f0; societyguester=1ceade902ec4772900546b6e1e188c3f0; id=974224400; xnsid=8a002435; jebecookies=45ac8704-a0f6-4645-8f1a-797edcd5d3e0|||||; ver=7.0; loginfrom=null; jebe_key=68318478-abaa-4248-b487-11c0b8256130%7Cbb1f5efe2ae67ec3b4376d19dfd23104%7C1586822635944%7C1%7C1586822620472; wp_fold=0"
}
con = request.Request(url,headers=headers)
re = request.urlopen(con)
with open("index.html", "w", encoding="utf-8") as f:
    count = f.write(re.read().decode("utf-8"))
    print(count)

再次打开index.html文件,查看效果,发现能够正常获取到网站的信息
在这里插入图片描述
小结
首先我们需要了解什么是cookie,以及cookie的重要性
其次,需要自己动手实现上面的样例,有的网址会有很强的反爬机制,使用静态cookie是不行的,那么就需要利用到我之前介绍的CookieJar库使用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值