day4--使用cookie访问和代理

一、cookie

  1. 需求:爬取人人网当前用户的相关的用户信息(个人主页中显示的用户信息)

  2. http/https协议特性:无状态。

    • 没有请求到对应页面数据的原因:
      发起的第二次基于个人主页页面请求的时候,服务器端并不知道该此请求是基于登录状态下的请求
  3. cookie:用来让服务器端记录客户端的相关状态。

    • 手动处理:通过抓包工具获取 cookie值,将该值封装到 headers中。(不建议)
    • 自动处理:
      cookie值的来源是哪里?
      模拟登录post请求后,由服务器端创建
  4. session会话对象:
    作用:

    • 可以进行请求的发送。
    • 如果请求过程中产生了 cookie,则该 cookie会被自动存储/携带在该 session对象
  • 创建一个session对象:session= requests.Session()
  • 使用 session对象进行模拟登录post请求的发送( cookie就会被存储在 session中)
  • session对象对个人主页对应的get请求进行发送(携带了 cookie)
import requests
from lxml import etree



def get_info():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
    }
    url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2021201231344'
    data = {
        'email':'181********',
        'icode'	:'',
        'origURL':'http://www.renren.com/home',
        'domain':'renren.com',
        'key_id':1,
        'captcha_type':'web_login',
        'password':'1e03d5db8337ef3a72b7db3fc26db97a8255780a55a175f0b654438a7413863b',
        'rkey':'eacfdfd459f92cfa730315cdd2c60347',
        'f':''
    }
    #使用session模拟登录
    session = requests.Session()
    response = session.post(url=url,headers=headers,data=data)
    print(response.status_code)

    #使用携带cookie的session进行get请求,获取用户主页信息
    detai_url = 'http://www.renren.com/976379599/profile'
    detai_text = session.get(url=detai_url,headers=headers).text
    with open('./renren.html','w',encoding='utf-8') as f:
        f.write(detai_text)


if __name__ == '__main__':
    get_info()

二、代理

  1. 什么是代理
    代理服务器
  2. 代理的作用
    • 突破自身IP访问的限制
    • 隐藏自身的真实ip
  3. 代理相关的网站
    • 快代理
    • 西祠代理
    • www.goubanjia.com
  4. 代理ip的类型
    • http:应用到http协议对应的url中
    • HTTPS:应用到https协议对应的url中
  5. 代理ip的匿名度
    • 透明:服务器知道该次请求使用了代理,也知道请求对应的真实ip
    • 匿名:知道使用了代理,但是不知道真实ip
    • 高匿:不知道使用了代理,更不知道真实的ip
import requests


url = 'https://www.baidu.com/s?wd=ip'

headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
    }

page_text = requests.get(url=url,headers=headers,proxies={'https':'113.195.225.186:9999'})
page_text.encoding = 'utf-8'
page_text = page_text.text
with open('ip.html','w',encoding='utf-8') as f:
    f.write(page_text)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值