鱼C论坛

 找回密码
 立即注册
查看: 1250|回复: 3

请教一个关于requests模块的问题

[复制链接]
发表于 2018-2-14 16:13:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 天圆突破 于 2018-2-14 16:18 编辑

发帖前查过好多地方了,但是都没有准确的回答,只好来请教大佬。

我想问的是reqeusts的get方法能不能加headers?查官方文档里没有写,小甲鱼老师的翻译文档里页没有这方面的例子,都是post方法里面加headers的例子。一些网站会不会在get访问的时候查验headers?

除了headers之外,他们还有可能会查什么?

比如我要爬一个代理ip的网站(似乎不自量力了,他们应该是反爬最严的网站了吧……他们的同行之间的厮杀……简直啧啧),用get方法加不加headers状态码都返回503,似乎是把我当成ddos了?,用浏览器就不会(headers都加全了,还加了随机浏览器头),他们可能是通过什么手段知道我是爬虫访问的?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-14 16:18:19 | 显示全部楼层
定制请求头
如果你想为请求添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以了。

例如,在前一个示例中我们没有指定 content-type:

>>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}

>>> r = requests.get(url, headers=headers)
注意: 定制 header 的优先级低于某些特定的信息源,例如:

如果在 .netrc 中设置了用户认证信息,使用 headers= 设置的授权就不会生效。而如果设置了 auth= 参数,``.netrc`` 的设置就无效了。
如果被重定向到别的主机,授权 header 就会被删除。
代理授权 header 会被 URL 中提供的代理身份覆盖掉。
在我们能判断内容长度的情况下,header 的 Content-Length 会被改写。
更进一步讲,Requests 不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去。

注意: 所有的 header 值必须是 string、bytestring 或者 unicode。尽管传递 unicode header 也是允许的,但不建议这样做。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-14 16:19:30 | 显示全部楼层
403的返回,是你被认定是爬虫。
1.爬取速度过快。
2.代理ip失效(一般收费的才能用)。
请大佬补充。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-14 18:07:53 | 显示全部楼层
我猜测你爬取的可能是快代理,他们反爬虫的手段很简单,只要设置time.sleep(),稍微放慢一点即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-28 00:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表