【发布时间】:2017-04-16 04:51:56
【问题描述】:
我注意到http://www.momondo.com.cn/ 正在使用一些神奇的技术:
curl 不起作用。该 URL 在 Web 浏览器中显示良好,但 curl 总是返回超时,即使我像 Web 浏览器一样添加所有标头。
我也尝试过 Python 请求和urllib2,但它们也不起作用。
C:\Users\Administrator>curl -v -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" -H "Connection: Keep-Alive" -H "Accept-Encoding:gzip, deflate, sdch" -H "Cache-Control:no-cache" -H "Upgrade-Insecure-Requests:1" -H "Accept-Language:zh-CN,zh;q=0.8" -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
http://www.momondo.com.cn/
* About to connect() to www.momondo.com.cn port 80 (#0)
* Trying 184.50.91.106...
* connected
* Connected to www.momondo.com.cn (184.50.91.106) port 80 (#0)
> GET / HTTP/1.1
> Host: www.momondo.com.cn
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36
> Connection: Keep-Alive
> Accept-Encoding:gzip, deflate, sdch
> Cache-Control:no-cache
> Upgrade-Insecure-Requests:1
> Accept-Language:zh-CN,zh;q=0.8
> Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
>
为什么以及如何发生这种情况? Momondo是如何逃出curl的?
【问题讨论】:
-
这太宽泛了。有许多技术可以对非浏览器流量进行指纹识别;抓取内容的最佳方法是使用无头浏览器。
-
是的,我知道,有些网站可以通过 Javascript 检测。但我很惊讶 momondo 可以通过与真正的浏览器相同的第一个任务进行检测。
标签: python curl web-scraping web-crawler