不存在的!python说不给数据的浏览器是不存在的!
有时候我们些代码是总发此疑惑?
为什么别人采集 xx 网站的时候能成功,而我却总是不返回给数据
出现这种原因时往往是我们没有给够伪装, 被识别了出来~
就像人,你出门肯定是要穿衣服的对不,如果你不穿!
走在外面,肯定是最显眼的一个,不抓你抓谁
还有一种就是明明我之前运行成功了,为什么我现在再次运行时就不行了呢~
而且还甩一句话给我 “系统检测到您频繁访问,请稍后再来”
好啦!现在咋们正经的来介绍一下面对此种情况该如何处理~
要会伪装,要想想看,人是怎么访问网站的
这次我们来说说伪装 Header ,当你要去爬取某个网站的数据的时候
你要想想看,如果是别人爬取你的数据,你会做什么操作
你是不是也不想,让别人随随便便就疯狂请求你的服务器
你是不是也会,采取一定的措施
比如,我有一个网站,你分析到了我的地址
当你想要通过 python 来爬取的时候…
这边我来写一个简单的可以被请求的例子
from flask import Flask
app = Flask(__name__)
@app.route('/getInfo')
def hello_world():
return "这里假装有很多数据"
if __name__ == "__main__":
app.run(debug=True)
ok ,假设你现在分析到了我的地址了,
也就是可以通过 /getInfo 就可以获取到数据了
你感觉很爽,就开始请求了
url = 'http://127.0.0.1:5000/getInfo'
response = requests.get(url)
print(response.text)
没错,这个时候你确实获取到数据了
但是!我觉得有点不对劲了,想看看请求的 header 信息
@app.route('/getInfo')
def hello_world():
print(request.headers)
return "这里假装有很多数据"
if __name__ == "__main__":
app.run(debug=True)
结果看到的 headers 信息是这样的
Host: 127.0.0.1:5000
User-Agent: python-requests/2.21.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive

User-Agent: python-requests/2.21.0
居然使用 python 的库来请求,你说我不封你封谁呢?
所以我这个时候进行判断,就获取不到数据了
@app.route('/getInfo')
def hello_world():
if(str(request.headers.get('User-Agent')).startswith('python')):
return "系统检测到您频繁访问,请稍后再来"
else:
return "这里假装有很多数据"
欢迎加入白嫖Q群:660193417 ###
if __name__ == "__main__":
app.run(debug=True)
你这个时候的请求
if __name__ == '__main__':
url = 'http://127.0.0.1:5000/getInfo'
response = requests.get(url)
print(response.text)
得到的结果就是
“系统检测到您频繁访问,请稍后再来”
你已经在我面前暴露了,想重新再来,那么怎么办呢?
伪装自己呗,python 不可以访问
浏览器可以访问呀,所以你可以修改你的请求头
先在浏览器访问,然后在抓取数据的时候获取到 Header 数据
当然你也可以使用 Chrome 的控制面板获取 Header

有了 Header 信息之后,就可以使用 requests模块轻松获取
恩,现在的你学会假装自己是浏览器了
欢迎加入白嫖Q群:660193417 ###
if __name__ == '__main__':
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url = 'http://127.0.0.1:5000/getInfo'
response = requests.get(url,headers=headers)
print(response.text)
再获取一次可以发现,返回的是
这里假装有很多数据
ok,你又获取到数据了
好啦,这篇文章就到这里啦~对你有帮助就点赞收藏一下吧!
我是小熊猫,咱下篇文章见

不存在的!python说不给数据的浏览器是不存在的!的更多相关文章
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- python matplotlib plot 数据中的中文无法正常显示的解决办法
转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...
- Python/Numpy大数据编程经验
Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点. ...
- Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- 用Python浅析股票数据
用Python浅析股票数据 本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData ...
- Python读取JSON数据,并解决字符集不匹配问题
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...
- 使用 python 处理 nc 数据
前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是& ...
- 【转】Python——plot可视化数据,作业8
Python——plot可视化数据,作业8(python programming) subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import sc ...
随机推荐
- 2022.02.20 SA
2022.02.20 SA 如果我还能看见明天黎明,如果我还能再爬起来,我仍会走我的路,哪怕这条路已经荒废许久,也许我们无法拥有感情,我们甚至无法像个正常人一样接受太阳的洗礼,但是我依然会执行我的条约 ...
- 2021.07.17 题解 CF1385E Directing Edges(拓扑排序)
2021.07.17 题解 CF1385E Directing Edges(拓扑排序) CF1385E Directing Edges - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) ...
- 机器学习实战:用SVD压缩图像
前文我们了解了奇异值分解(SVD)的原理,今天就实战一下,用矩阵的奇异值分解对图片进行压缩. Learn by doing 我做了一个在线的图像压缩应用,大家可以感受一下. https://huggi ...
- 聊聊redis的主从复制吧
聊聊基础概念 主从复制与主从替换 主从复制不同于主从替换,主从复制是正常情况下主节点同步数据到从节点:主从替换是主节点挂了之后,把从节点替换为主节点: 从节点存在的意义:备份主节点数据+负载均衡(对外 ...
- zookeeper篇-zk的选举机制
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 说说zk的选举机制 基础概念 zxid=事务id=一个时间戳,代表当前事 ...
- VDO虚拟数据优化
VDOVirtual Data Optimize 虚拟数据优化 是一种通过压缩或删除存储设备上的数据来优化存储空间的技术. VDO 是红帽公司收购了 Permabit 公司后获取的新技术,并与2019 ...
- Error:java: Can‘t generate mapping method with primitive return type.报错
原因:Spring项目中使用了JPA以及Mybatis–mapper文件注解引错包导致编译错误 解决: 错误:import org.mapstruct.Mapper;正确路径:import org.a ...
- os、json、sys、subprocess模块
os模块 import os 1.创建目录(文件夹) os.mkdir(r'a') # 相对路径 只能创建单级目录 os.makedirs(r'a\b') # 可以创建单级和多及目录 2.删除目录 o ...
- 云厂商 RDS MySQL 怎么选
1. 摘要 为了让大家更好的了解各云厂商在RDS MySQL数据库功能上的差异,也为给准备上云的同学做个参考,本文将对阿里云.腾讯云.华为云和AWS 的 RDS MySQL数据库进行对比说明. 从一个 ...
- MPLS L3 跨域 optionB 配置
mpls跨域optionB optionB的核心思想是私网路由传递过程是 PE-ASBR1-ASBR2-PE2 在传递过程中私网标签发生了变化(由ASBR重新分配了私网标签),而在数据平面(不考虑PH ...