22.2.14 session和反反爬处理

1.session:

  • requests库包含session,都是用来对一个url发送请求,区别在于session是一连串的请求,在session请求过程中cookie等参数不会丢失。

  • requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象求求该网站的其他网页都会默认使用该session之前使用的cookie等参数尤其是在保持登陆状态时运用的最多,在某些网站抓取,或者app抓取时,有的时强制登陆,有的是不登陆返回的数据就是假的或者说是不完整的数据,那我们不可能去做到每一次请求都要去登陆一下怎么办,就需要用到保持会话的功能了,我们可以只登陆一次,然后保持这种状态去做其他的或者更多的请求。

  • code:

    • import requests


      url='http://www.renren.com/PLogin.do'

      id = input('请输入用户名:')
      pw = input('请输入密码:')

      data = {
             
             "email": id,
             "password": pw}
      headers={
         'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
      }
      session=requests.session()
      session.post(url,data=data,headers=headers)
      response=session.get("http://www.renren.com/880151247/profile")
      with open('renren.html','w',encoding='utf-8') as fp:
         fp.write(response.text)

2.反反爬处理

  • 反反爬主要是处理user-agent,cookie,referer,定期sleep,加代理等等。

    • 处理user-agent,cookie,referer都是一样的套路,在浏览器的抓包工具中找到对应的值,包装到headers中,再请求url时传入headers。定期sleep主要是为了防止一瞬间对网址的访问量过大,致使网址给你的账号封禁。

    • 使用代理:

      • proxies = {
           "http":"http://代理IP"
          或者
           "https":"https://代理IP"
           #注意要和你访问的url前面的一致,你的url前面是http就在proxies里面用第一个,如果是https就用第二个。
        }
        requests.get(url,proxies)
    • 这里以爬取梨视频为例,下载某一个视频:

      • import requests
        from lxml import etree

        def refererPrt():
           url = "https://www.pearvideo.com/video_1751556"  #练习爬取的网站是湿湿的,url可能会过期
           #拿到开头url中的视频编号:
           vedioId = url.split("_")[1]

           #   https://video.pearvideo.com/mp4/short/20220211/1644668544573-15825835-hd.mp4           404     f12     systemTime: "1644668544573"
           #   https://video.pearvideo.com/mp4/short/20220211/cont-1676274-15825835-hd.mp4             right   源码
           
           #思路:分别拿到上面两个url,再将systemTime替换成cont-1676274
           #1676274是视频的url("https://www.pearvideo.com/video_1676274")中有

           #   https://www.pearvideo.com/videoStatus.jsp?contId=1676274&mrd=0.7848558827776768

           vedioStudios = f"https://www.pearvideo.com/videoStatus.jsp?contId={vedioId}&mrd=0.7848558827776768"
           #这个链接在f12 network fech/xhr headers requests url可以拿到

           #未能得到想要的信息:提示该文章已经下线。   解决方法:反反爬(添加User-Agent、处理cookie、处理防盗链referer等等,这里处理防盗链referer即可)
           
           headers = {
           "Referer": url  #防盗链,可以理解为溯源 本次请求的上一级是谁(在本次练习中必须是拉取视频的网址,即开头的url)
          }

           #加入这个headers就能拿到我们想要的内容

           response = requests.get(vedioStudios,headers = headers)
           #   print(response.json())
           systemTime = (response.json())['systemTime']
           vediourl = (response.json())['videoInfo']['videos']['srcUrl']

           # print(systemTime)
           # print(vediourl)
           #拿到systemTime和vediourl,下一步就是做替换


           #print(vedioId)
           vediourl = vediourl.replace(systemTime,"cont-"+vedioId)
           #print(vediourl)
           #拿到视频地址,接下来用文件的形式存下来
           with open("vedio.mp4",mode="wb") as f:
               f.write(requests.get(vediourl).content)
               f.close()
               
        if __name__ == '__main__':
           refererPrt()

22.2.14session和反反爬处理的更多相关文章

  1. python做反被爬保护的方法

    python做反被爬保护的方法 网络爬虫,是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.但是当网络爬虫被滥用后,互联网上就出现太多同质的东西,原创得不到保护.于是,很 ...

  2. python反反爬,爬取猫眼评分

    python反反爬,爬取猫眼评分.解决网站爬取时,内容类似:$#x12E0;样式,且每次字体文件变化.下载FontCreator . 用FontCreator打开base.woff.查看对应字体关系 ...

  3. selenium + chrome 被检测,反反爬小记

    selenium + chrome 很多难以采集的网站都使用selenium爬取,但是后来发现selenium有特征值,会被检测出来,今天来小结一下反反爬方案 测试网站 全绿好像代表没被检测出 中间人 ...

  4. Scrapy中的反反爬、logging设置、Request参数及POST请求

    常用的反反爬策略 通常防止爬虫被反主要有以下几策略: 动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息.) 禁用cookies(也就是不启用cookies midd ...

  5. python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题

    python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题 一丶爬虫概述       通过编写程序'模拟浏览器'上网,然后通 ...

  6. 爬取豆瓣电影储存到数据库MONGDB中以及反反爬虫

    1.代码如下: doubanmoive.py # -*- coding: utf-8 -*- import scrapy from douban.items import DoubanItem cla ...

  7. 反反爬虫 IP代理

    0x01 前言 一般而言,抓取稍微正规一点的网站,都会有反爬虫的制约.反爬虫主要有以下几种方式: 通过UA判断.这是最低级的判断,一般反爬虫不会用这个做唯一判断,因为反反爬虫非常容易,直接随机UA即可 ...

  8. 爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider)

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1小莫想要某站上所有的电影,写了标准的爬虫(基于HttpCli ...

  9. 爬虫---Beautiful Soup 反反爬虫事例

    前两章简单的讲了Beautiful Soup的用法,在爬虫的过程中相信都遇到过一些反爬虫,如何跳过这些反爬虫呢?今天通过知乎网写一个简单的反爬中 什么是反爬虫 简单的说就是使用任何技术手段,阻止别人批 ...

随机推荐

  1. pytest(9)-标记用例(指定执行、跳过用例、预期失败)

    pytest中提供的mark模块,可以实现很多功能,如: 标记用例,即打标签 skip.skipif标记跳过,skip跳过当前用例,skipif符合情况则跳过当前用例 xfail标记为预期失败 标记用 ...

  2. CoRR 2018 | Horovod: Fast and Easy Distributed Deep Learning in Tensorflow

    将深度学习模型的训练从单GPU扩展到多GPU主要面临以下问题:(1)训练框架必须支持GPU间的通信,(2)用户必须更改大量代码以使用多GPU进行训练.为了克服这些问题,本文提出了Horovod,它通过 ...

  3. 从Spring容器的角度理解Dubbo扩展点的加载时机

    对于Dubbo提供的扩展点,主程序执行的过程中并没有显示调用加载的过程,无论是自激活的Filter还是自适应的ThreadPool.那么这样的扩展点在程序运行的哪个节点调用的呢?跟踪之前性能监控扩展点 ...

  4. 日行一算(Consecutive Integer-连续整数)

    题目 题目描述 2005年的百度之星初赛有这么一道题,一个正整数有可能可以被表示为 m(m>1) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 但现在你的任务 ...

  5. Typora的使用教程.md

    Typora的使用教程 原创:https://home.cnblogs.com/u/cn-zhouchao 2021.12.13 一.软件的介绍 Typora 是一款由 Abner Lee 开发的轻量 ...

  6. web安全之快速反弹 POST 请求

    在 CTF Web 的基础题中,经常出现一类题型:在 HTTP 响应头获取了一段有效期很短的 key 值后,需要将经过处理后的 key 值快速 POST 给服务器,若 key 值还在有效期内,则服务器 ...

  7. [题解]Mail.Ru Cup 2018 Round 1 - B. Appending Mex

    [题目] B. Appending Mex [描述] Ildar定义了一种方法,可以由一个数组产生一个数.具体地,从这个数组中任选一个子集,不在这个子集中的最小的非负整数称为mex,就是由这个数组得到 ...

  8. [题解]RQNOJ PID87 过河

    链接:http://www.rqnoj.cn/problem/87 思路:动态规划 定义f[i][j]表示到达第 i 块给定石头用了 j 块添加石头的最少步数. 转移方程:f[i][j]=min{f[ ...

  9. [GAME] [Civilization] 文明6字体及字体大小修改

    一.前言 文明作为一款文本信息量较大的游戏,提供的字体和UI界面设置还是偏少了一些,对干眼用户极不友好 二.用户界面整体缩放 首先是游戏自带的缩放选项:图象选项-图像-UI质量提升,设置为150%或更 ...

  10. Anaconda Navigator:this application failed to start because it could not find or load ...windows in

    原因:在Anaconda的根目录下,有一个叫 qt.conf的文件,用记事本或者Notepad打开 该问题是这些路径错误导致的(比如你把Anaconda挪动了位置,导致这里边的路径还是原来的位置). ...