我注意到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使用以下方法来阻止不真实的web客户端。在
最后,我现在可以使用curl来获取内容:
顺便说一句,我已经做了七年的网络垃圾。这是我第一次遇到一个网站使用这种防刮方法。标记一下。在
您是如何设置请求的?如果您使用的是} 对象类型,并更改其中的头,以便可以轻松地重用它们。看起来他们并没有做什么特别的事情,因为直接在那个站点上使用telnet(例如,
requests
,那么您应该使用^{telnet www.momondo.com.cn 80
)和由浏览器生成的报头(通过tcpdump
捕获的)会导致内容返回,而不是挂起直到超时。此外,它还关注站点背后的CDN(内容交付网络),在这种情况下,地址解析为akamaiedge.net
的某个子域,这意味着检查why they might have blocked you可能有用。在总之,使用您随
requests.Session
对象提供的头,就生成了一个响应。在一点也不神奇。在
相关问题 更多 >
编程相关推荐