爬虫碰到状态码412

近期在使用python的requests库爬取网页时,碰到返回状态码为412的情况

状态码412含义为:Precondition Failed,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。

一、尝试一:添加headers

判断出问题出在请求头上以后,下面我们尝试把网页的所有请求头都带上,注意:这里带的是全部字段,尤其是cookie字段。

添加cookie有2种方式:

1. 添加在headers里

headers = {"User_Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36","Cookie" : "复制粘贴相应的cookie "
}
response = requests.get(url, headers = headers )

2.分开并单独添加cookie和headers

# 设置headers
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
}# 设置cookies
cookies = {}
cookies['mall'] = '1638237165.7.1148.523814'
cookies['JSESSIONID'] = '7D7F08E6CAC6989FDE82EBDEBBF9CB21'# 发起请求
http_response = requests.post(url_http, cookies=cookies, headers=headers, timeout=5)

这里我用的是第1种方法,感觉更方便一点,可以成功获得返回的200状态码。但现在有了新的问题:

这种方式请求只可以持续1-2分钟会返回200,然后又接着返回412,看来cookie的时效比较短,需要频繁更换。这里我又继续尝试了以下2种方法:

二、尝试二:使用selenium模拟

关于selenium的使用方法这里不详细介绍,模拟的时候碰到一个问题,因为我的页面是重定向跳转的,这里并没有成功打开,需要在driver里加一些选项,下面的这些选项可以应对大部分的网址:

def getDriver():options = webdriver.ChromeOptions()options.add_argument("--disable-extensions")options.add_argument("--disable-gpu")#options.add_argument("--no-sandbox") # linux onlyoptions.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option("useAutomationExtension", False)driver = webdriver.Chrome(options=options)driver.execute_cdp_cmd("Network.enable", {})driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browserClientA"}})driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})return driverdriver = getDriver()

然后就可以成功打开页面并获取页面内容了。

三、未尝试:结合使用selenium和requests

使用selenium模拟获取cookie保存为本地文件并不断更新,使用requests库爬取,调用本地cookie文件。

爬虫碰到状态码412的解决办法相关推荐

  1. 爬虫状态码412状态

    问题 访问"https://www.pudong.gov.cn/zwgk/xqjy-jyjzdgz/2023/104/309147.html",其中请求头也带上足够字段,但是还是访 ...

  2. 工程源码丢失复原解决办法

    工程源码丢失复原解决办法 一.问题描述 二.问题原因 三.解决办法 1.短视高效办法 2.长远考虑 一.问题描述 多项工程引用同一个jar包的内容.但是由于工作交接,该jar包原工程的代码库中,部分源 ...

  3. 爬虫返回状态码“521” 解决方案 | 设置Cookie解决

    问题:在爬虫某个网页时,返回状态码为"521",如何解决? Code: import requestsdef get_one_page(url):headers = {'User- ...

  4. 爬虫遭遇状态码521陷阱 破解js加密cookie

    最近接了个小单,遇到一个很头疼的问题,返回的状态码无限521,在网上查阅了各种资料后,终于解决了问题返回200. 首先咱们先贴上网址:点击打开链接 首先我们按照传统的方法: import reques ...

  5. 关于千里马招标网知道创宇反爬虫521状态码的解决方案(python代码模拟js生成cookie _clearence值)...

    一.问题发现 近期我在做代理池的时候,发现了一种以前没有见过的反爬虫机制.当我用常规的requests.get(url)方法对目标网页进行爬取时,其返回的状态码(status_code)为521,这是 ...

  6. ajax请求提示html状态码302,快速解决ajax请求出错状态码为0的问题

    今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构. 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法 ...

  7. 使用httpie测试web服务返回状态码308的解决方法

    一.问题描述 我在使用测试我的flask项目web服务时,没有按照预期返回我要的json格式的数据,而是返回了状态码308和一些提示信息.如下图所示: 二.解决方法 在下面的描述里面已经很详细地告诉了 ...

  8. iOS中在UIViewController中的UIButton被点击后展示Highlighted状态有延迟的解决办法

    问题 如果在UIPageview中的子View中有UIButton,这时候会遇到一个问题:UIButton被触摸时切换到Hightlighted状态会有延迟. 解决办法 其实在UIScrollView ...

  9. 【Hackintosh】对于帕斯卡构架的显卡不能成功驱动补丁可能出现的SIP状态异常问题以及解决办法

    可能出现的问题 大家在使用EFI进入系统后,通常不能够顺利驱动显卡的补丁,问题通常都出现在补丁的安装过程中,在安装时,会提示"Cannot Patch due to following re ...

  10. python 爬虫遇到的aiohttp证书错误解决办法

    学习爬虫的路上真不是一帆风顺,总是遇到各种各样的问题,在这个系统正常,换一个系统就出问题,在CentOS7,一切正常.这不,今天练习异步http请求aiohttp模块,操作系统是mac ,python ...

最新文章

  1. 关于Exchange Server 2010中OWA页面无法打开问题处理方法
  2. Tomcat服务器的常用配置
  3. arch linux 下 安装搭建python机器学习环境
  4. intellij idea 全局搜索
  5. Kubernetes CRD开发工具Operator-SDK简介
  6. 定义一个数组返回最大子数组的值(1)
  7. 学习《css世界》笔记之使用vertical-align数值实现文字和小图标对齐
  8. 打擦边球,涨粉1700万!中国最“不正经”的官媒,比杜蕾斯还会玩
  9. 机器学习之旅:三分钟读懂最大熵模型
  10. matlab计算方差和平均值,matlab求平均值和方差
  11. Qt 编译时遇到 error: [debug/qrc_music.cpp] Error 1
  12. 中国电信天翼空间发布移动应用开发运营平台
  13. 【转载】如何从win8/8.1中文版(核心版)升级到win8/8.1专业版
  14. 克鲁斯卡尔算法(Kruskal Algorithm)——图的最小生成树
  15. 网络安全ai能力建设_人工智能对网络安全的影响
  16. 都说IT行业饱和了,2023年成为程序员还有发展前景吗?
  17. git branch -D 大写的D 删除分支
  18. DtERP_erp企业资源计划系统
  19. 江南大学人工智能与计算机学院拟录取名单,江南大学人工智能与计算机学院2021考研预调剂信息...
  20. arthas 执行ognl表达式ClassNotFoundException

热门文章

  1. 龙芯 LS2K 16G 内存支持
  2. 证件照处理:一寸照片换底色
  3. 音视频开发(四十四):M3U8边缓存边播放
  4. 虚拟机opnsense作为dhcp服务器,ESXI 与 OPNSense 配合
  5. 搜索引擎提交入口总结
  6. matlab中if语句的条件,matlabif条件语句
  7. java汉字字符串转拼音
  8. →箭头符号大全复制_特殊符号大全8908194
  9. Qt5+vs2017 UI界面添加新控件后,提示没有类成员
  10. Android剪切板标签,教你使用剪切板——Android中的复制粘贴