HTTP 头里的 user-agent 可以随便填吗
发布网友
发布时间:2022-04-19 01:37
我来回答
共2个回答
懂视网
时间:2022-04-19 05:58
我写了个爬虫爬了一个网站一堆数据,自动换UA的,感觉很赞
不过很怕被目标网站给封了,
各位大神给些更好的策略吧~
回复内容:
爬虫自动换User-Agent在代码实现上只需要一句就够了,并不是什么高难度的技术活。爬虫为什么要换不同的User-Agent呢,无非就是为了模拟浏览器,让服务器不容易识别出自己是爬虫。
对于爬虫,其实上上策是爬网站之前先去读一下网站的『robots.txt』文件,看看网站开发者(或网站主人)允许你爬什么不允许你爬什么,然后按照主人的意愿,别做出格的事情。这着实是一种情怀。
当然,其实大部分情况下我们还是希望可以不论网站主人答不答应都爬下我们需要的内容,这就需要用到一些反反爬虫的机制了。题主提到的换U-A其实就是一种方法,当然仅仅换U-A对于大部分有反爬虫机制的网站是不够的。
以下是几种
简单常见的反爬虫机制和解决办法。
最简单的自然就是什么也不做,这样的网站爬起来就非常简单了,不赘述。
稍微拦一下的,可能就会校验下User-Agent了,U-A的作用就是标识你是什么浏览器/Client等等。一般编程语言内置的网络库或者第三方网络库,会将U-A设置成自己的标识,对于这样的情况网站开发者就能够很容易拦截了。于是就有了题主所说的换U-A,其实就是将库默认的U-A替换为常用浏览器的U-A,以达到干扰服务器识别的作用。
再复杂一点的,可能就不只是通过浏览器标识来识别了,访问者的IP也是标识之一。这样的反爬虫机制有一个问题就是,如果从同一个IP出去的真实请求很多,比较容易误判为爬虫。一般服务器会根据IP+Cookie来识别每个用户。要爬取这样的网站,一个比较简单且有效的方案是换代理。很多网站提供免费代理,抓下它们,然后在发请求通过代理(最好是高匿代理),就可以搞定大部分网站了。值得注意的是代理的有效时间一般比较短,所以爬代理之后应该有一个有效的机制校验已有代理的有效性。
更复杂的网站,就可能会通过账号来限制了。这样的网站一般在注册账号登录之前并不能完整浏览需要的资讯,必须要注册并登录后才能看到。这样的网站就需要注册一批账号了,在一个账号不可用之后更换新的账号。可以写一个脚本来批量注册账号。当然注册的时候一般会伴随验证码,对于简单的验证码可以Google以下OCR找找资料,复杂的验证码就手输或者购买人肉打码服务吧。
更加复杂的,就是一些社交网站了。社交网站大多非常封闭,拿新浪微博为例,微博在登录时需要提交很多参数,登录后请求的页面也不是最终的源码,还需要自己解析一遍。对于有大量js渲染的网页,一般复杂但是容易(是的,这两个词不矛盾)的,可以自己解析,复杂但是不容易的就通过一些库去做吧(比如Python的selenium等)。
........
中间还有很多就不总结了,最后讲一种情况。大概这属于爬虫界的无解难题了,就是请求所有的资源都需要
付费。是的,这类网站你需要在你的账户里充值,然后每次请求都是付费的,他们才不关心你是机器还是人,反正收费嘛。
大概就是这样,时间比较紧,总结中很多漏洞,请见谅。
。。换了UA有啥用。。又不是识别不出你来。。就好像你在超市领赠品,每人只能领一次,你换个衣服再去。。。人家不但认得出来,还觉得你滑稽
感觉LZ这个防反爬策略太low...
这种防反爬的策略我还没毕业就用了,对一些大的网站根本没用,没几分钟就被抓出来禁了。
频繁换IP兴许还有点用,毕竟一般的大站不会封一大段,排除一些疯了的会封整个A段或者整个B段导致整个一片都没有数据。
还有你拿下来的数据可能是XX宽带缓存的,你看下以前有个提问,是调过最难调的BUG,里面就是这样的,XX宽带会缓存目标网站URL的动态数据,蛋疼得不得了,所以你拿的数据有可能一点用处都没有,早就过期了。
你最好再想想别的,从其他角度欺骗一下服务器,没事多看看别人的东西怎么爬的。
你这样随便一个人都能写的,github上很多的,自己去搜搜看。
至少换个 ip 吧。。。
自动换user-agent不是标配么。。。。
今天发现一个爬虫不停变着 UA 在爬我们,然后我把它 IP 封了,感觉很赞
就凭你问这个问题,换ip、换电脑、搞高仿模拟,等等等等都没用的。
用代理IP要比这个策略好
你以为换个马甲服务器就不认识你了
换UA 无聊 又 2B
热心网友
时间:2022-04-19 03:06
最好是使用常用浏览器的User-Agent值,比如Firefox、IE、chrome等等,因为有些网站会过滤User-Agent,目的是*“机器人”程序访问网站。比如我以前用Python编写过一个爬虫程序,但是偏偏对一个网站总是出错,也找不到原因,后来发现是那个网站过滤User-Agent,我的程序使用的是Python脚本的默认值,而换成Firefox浏览器的User-Agent字符串就正常了。
HTTP 头里的 user-agent 可以随便填吗
可以的 当然,最好不要随便填写 随便填写的可能被误认为垃圾访客,例如采集网站数据的蜘蛛~,然后对其投毒,你就可能访问到错误的内容 最好用真实存在的
HTTP 头里的 user-agent 可以随便填吗
user-agent不应该随便填的,它是有用途的。user-agent的其中一个用途是统计,例如分辨request来自哪一个爬虫。
HTTP 头里的 user-agent 可以随便填吗
最好是使用常用浏览器的User-Agent值,比如Firefox、IE、chrome等等,因为有些网站会过滤User-Agent,目的是限制“机器人”程序访问网站。比如我以前用Python编写过一个爬虫程序,但是偏偏对一个网站总是出错,也找不到原因,后来发现是那个网站过滤User-Agent,我的程序使用的是Python脚本的默认值,而换成...
$_SERVER["HTTP_USER_AGENT"] 为什么会输出php的版本号
_SERVER["HTTP_USER_AGENT"]获取客户端浏览器的型号,这个不是一定准确的,是可以随意伪造的
...应用里对HTTP请求头部添加适当的User-Agent字段
对于安卓App来说,默认情况下的HTTP请求Header是不会带上这么一串字符串的。如果要带必须得自己构造了,摸索了半天,还是找到了达到和浏览器同样格式的设置User-Agent的方法:?DefaultHttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(url);// HttpPost httpPost = new ...
c语言实现的http请求中,User-Agent该填什么
User Agent表示的是客户端软件类型,也就是浏览器类型
什么是user-agent
User-Agent是一种网络浏览器或其他客户端应用程序向服务器发送的身份标识信息。User-Agent是一个HTTP请求头字段,它包含了发出请求的客户端应用程序的信息。这些信息可以包括应用程序的名称、版本、操作系统和编程语言等。服务器可以通过User-Agent信息来识别客户端的类型和功能,从而根据这些信息来定制响应内容...
一个网站通过代码能够可以实现,别的任何的浏览器都不能访问,只能使用自 ...
可以通过User-Agent实现。在http协议里,头信息中包含一个 User-Agent,它的作用是告诉服务器用户客户端是什么浏览器,以及操作系统等的信息的,现在流行的能获取客户端信息的图片签名就是读取的User-Agent。但是user-agent 是可以伪造的,这种方法只能用来对付小白。
如何在curl中设置自定义的HTTP头
这两个命令同样都对HTTP头的"User-Agent"字符串进行了更改。curl -H "User-Agent: my browser" http://cnn.com curl -A "my browser" http://cnn.com wget是另外一个类似于curl,可以用来获取URL的命令行工具。并且wget也一样允许你使用一个自定义的HTTP头。点击这里查看wget命令的详细信息。
什么是user-agent
User-Agent是一种用户代理信息。User-Agent是一个用于识别用户使用的操作系统、浏览器类型及其版本等信息的字符串。它是HTTP请求中的一个重要组成部分,通常由用户的浏览器在发出请求时自动发送到服务器。User-Agent不仅有助于网站开发人员了解用户访问网站时使用的设备和浏览器类型,还可以帮助网站优化和改进...