ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cookie

2021-09-16 19:03:59  阅读:150  来源: 互联网

标签:http cn get cookie ECS requests


cookie与session

cookie与session的发明是专门用来解决http协议无状态的特点

  http协议无状态>>>:不保存用户端状态(记不住)

(早期的网址不需要保存用户状态,所有人来访都是相同的数据)

 

随着时代的发展越来越多的网址需要保存用户状态(记住你)

cookie:保存在客户端浏览器上面的键值对数据

  (用户第一次登陆成功之后,浏览器会保存用户名和密码

  之后访问网站都会自动带着该用户名和密码)

session:保存在服务端上面的用户相关的数据

  (用户第一次登陆成功之后,服务端会返回给客户端一个随机字符串(有时候也可能是多个)

  客户端浏览器保存该随机字符串之后访问网站都带着该随机字符串)

cookie和session是什么关系:session需要依赖cookie

  只要是涉及到用户登录都需要使用到cookie

    ps:浏览器也可以拒绝保存数据

cookie实战

(浏览器network选项中,请求体对应的关键字是Form Date)

登陆地址:http://www.aa7a.cn/user.php

请求体数据格式

username:
password:
captcha:
remember:
ref:
act:

写爬虫一定是先使用浏览器研究再写代码

  1.研究登陆数据提交给后端的url地址

  2.研究登陆post请求携带的请求体数据格式

  3.模拟发送post请求

import requests

res = requests.post('http://www.aa7a.cn/user.php',
                data={
                'username': 'jason',
                'password': '123',
                'captcha': '1234',
                'remember': 1,
                'ref': 'http://www.aa7a.cn',
                'act': 'act_login',
                    }
                    )

获取cookie数据

print(res.cookies.get_dict())
user_cookie = res.cookies.get_dict()

用户名或密码错误的情况下返回的cookie数据

{'ECS[visit_times]': '1', 'ECS_ID': '69763617dc5ff442c6ab713eb37a470886669dc2'}

用户名和密码都正确的情况下返回的cookie数据

{
'ECS[password]': '4a5e6ce9d1aba9de9b31abdf303bbdc2', 
'ECS[user_id]': '61399', 
'ECS[username]': '616564099%40qq.com', 
'ECS[visit_times]': '1', 
'ECS_ID': 'e18e2394d710197019304ce69b184d8969be0fbd'
}

 使用cookie访问网站

res1 = requests.get('http://www.aa7a.cn/',
                               cookies=user_cookie
                               )
if '邮箱' in res1.text:
    print('登陆身份访问')
else:
    print('cookie存在错误')

 获取大数据

  stream参数:一点一点的取,比如下载视频时,如果视频100G,用response.content然后一下子写到文件中是不合理的

import requests

response=requests.get('http://www.shiping.com/xxx.mp4',

                    stream=True)

with open('b.mp4','wb') as f:

    for line in response.iter_content():    # 一行一行读取内容

        f.write(line)

json格式

  json格式的数据有一个非常显著的特征>>>:引号肯定是双引号

 

在网络爬虫领域,其实内部有很多数据都是采用的json格式

(前后端数据交互一般使用的都是json)

import requests
res = requests.get('https://api.bilibili.com/x/player/pagelist?bvid=BV1QE41147hU&jsonp=jsonp')
print(res.json())    # 可以直接将json格式字符串转换成python对应的数据类型

SSL相关报错(苹果电脑常见)

   直接百度搜索即可

IP代理池

有很多网站针对客户端的IP地址也存在防爬措施

  eg:比如一分钟之内同一个IP地址访问该网站的次数不能超过30次,超过了就封禁该IP地址

  针对该防爬措施如何解决?

    IP代理池

      里面有很多IP地址每次访问从中随机挑选一个

 

# 代理设置:先发送请求给代理,然后由代理帮忙发送(封ip是常见的事情)

import requests
proxies={
    'http':'114.99.223.131:8888',
    'http':'119.7.145.201:8080',
    'http':'175.155.142.28:8080',
}
respone=requests.get('https://www.12306.cn',
                     proxies=proxies)

cookie代理池

有很多网站针对客户端的cookie也存在防爬措施

  eg:比如一分钟之内同一个cookie访问该网站的次数不能超过30次,超过了就封禁该cookie

    针对该防爬措施如何解决?

      cookie代理池

        里面有很多cookie每次访问从中随机挑选一个

respone=requests.get('https://www.12306.cn',
                     cookies={})

标签:http,cn,get,cookie,ECS,requests
来源: https://www.cnblogs.com/wyhb/p/15293444.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有