爬虫大佬进来,这个没验证码、不限制 ip、不混淆字符的网站能爬出来算我输

2020-03-20 10:01:30 +08:00
 kisshere

https://pixabay.com

这个站本来准备练练手写爬虫,却严重打击了写爬虫的信心,不限制 ip,没 captcha,你即使复制浏览器的所有 headers,服务器还是能直接一个 403 扔过来,但你用正常浏览器:chrome、Firefox 就能正常访问,这个用的什么反爬技术

10294 次点击
所在节点    程序员
81 条回复
AmberJiang
2020-03-20 16:32:49 +08:00
有意思 观望一下
sunziren
2020-03-20 16:49:12 +08:00
@JamesChan21 你要笑死我😀
woscaizi
2020-03-20 17:01:47 +08:00
很明显啊,不是这个网站在反爬,是 cloudflare 的反爬策略生效了。
hicdn
2020-03-20 17:04:44 +08:00
@FaiChou brew install curl-openssl 就行,不用 tap
fzhyzamt
2020-03-20 17:14:01 +08:00
试了一下拷贝 curl 直接执行,正常页面。。。。
hellov22ex
2020-03-20 17:15:48 +08:00
楼主,你学爬虫要知道一个原理,你人能看到的任何东西,都可以爬下来,就算是图片里面的文字,你喜欢也可以做 OCR,只有想不到,没有做不到
F0nebula
2020-03-20 17:19:16 +08:00
@tlday # 54 我这里直接加 --tlsv1.3 就可以了

curl -V
curl 7.69.1 (x86_64-pc-linux-gnu) libcurl/7.69.1 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh2/1.9.0 nghttp2/1.39.2
Release-Date: 2020-03-11
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets
fenghuang
2020-03-20 17:42:57 +08:00
http/2 和 tls/1.3 的问题,不支持这两个协议的浏览器打不开这个网站了?
ik
2020-03-20 18:11:39 +08:00
@leetom 不介意使用扩展的话可以试试 editthiscookies
fishfisher
2020-03-20 18:12:33 +08:00
curl 'https://pixabay.com/' -o /dev/null -s -w %{http_code} \
-H 'authority: pixabay.com' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
-H 'accept-language: zh-CN,zh;q=0.9,en;q=0.8'; echo

试了一下 curl, 上面 4 个-H 少一个都会 403
tlday
2020-03-20 18:14:58 +08:00
@fenghuang 我测试下来 tls/1.3 是必须的,我没有其他不支持 tls/1.3 的浏览器可以测试,所以不知道不支持 tls/1.3 的浏览器能不能看。但是可以 bypass 反爬机制的就是:
1.用 http/1.x,tls/1.3,去掉 authority 头
2.用 http/2,tls/1.3,可以不用去掉 authority 头(推断)

authority 头是 http/2 特有的头,所以不会存在用 http/1.x,却发了 authority 头的浏览器。如果出现这种行为一定不是真人。
https://stackoverflow.com/questions/36019868/authority-http-header-in-chrome-dev-tools

即使真的有人在用不支持 tls/1.3 的浏览器,不是还有个验证页面和 cf_clearance 的 cookie 可以用么。只是体验差一点,但是 CF 他们既然敢这么做,说明现在不支持 tls/1.2 的浏览器应该已经很少了,影响不了绝大多数客户的浏览体验。
tlday
2020-03-20 18:16:29 +08:00
不支持 tls/1.2 的浏览器应该已经很少了 => 不支持 tls/1.3 的浏览器应该已经很少了
monospace
2020-03-20 18:20:53 +08:00
所以,输了的话会怎样?
goobai
2020-03-20 18:37:38 +08:00
splash 随便爬
nmdx
2020-03-20 18:55:53 +08:00
@tlday 旧版 Edge 是 tls1.2 win10 的 ie11 也是 可以直接打开,并没有什么问题,所以 tls 版本不是问题
9684xtpa
2020-03-20 19:40:51 +08:00
@crella #4 +1 ,selenium 轻松搞定
ihipop
2020-03-20 21:27:03 +08:00
@nmdx ua case ?
dsg001
2020-03-20 22:01:59 +08:00
cloudflare 的五秒盾,试试能不能找到源 ip
douglas1997
2020-03-20 22:50:06 +08:00
@nullboy #15 分享一下 common 呗:-P
nullboy
2020-03-20 23:21:34 +08:00
@douglas1997 就创建一个 chrome driver,网上多的是

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX