这个站它是怎么做到反爬虫的?

2014-01-03 20:09:42 +08:00
 zhonghua
很喜欢www.sostart.com这个电台,于是想做一个它的APP玩

使用自己写的工具,flash cs设计界面,导出为cocos2d-x的jsb接口

设置了各种http header,依然无果

代码如下
···var xmlReq = new XMLHttpRequest();
var url = "http://www.sostart.com/api.php?_="+(new Date().getTime());
D(url);
xmlReq.open("GET", url);
xmlReq.responseType = "json";
xmlReq.onreadystatechange = function(){
D(xmlReq.getAllResponseHeaders());
if(cb){
cb(xmlReq);
}
}
xmlReq.setRequestHeader("Refer", "http://www.sostart.com/");
xmlReq.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
xmlReq.setRequestHeader("Host", "www.sostart.com");
xmlReq.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xmlReq.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
xmlReq.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xmlReq.setRequestHeader("Accept-Encoding", "gzip, deflate");
if (cookie) {
xmlReq.setRequestHeader("Cookie", this.cookie);
}
xmlReq.setRequestHeader("Connection", "keep-alive");
xmlReq.send();
···

依然无法获得在浏览器里得到的JSON

求解
4924 次点击
所在节点    程序员
3 条回复
dorentus
2014-01-03 20:20:33 +08:00
> xmlReq.setRequestHeader("Refer", "http://www.sostart.com/");

Refer -> Referer

HTTP referrer header 的名字是 Referer。
9hills
2014-01-03 20:28:10 +08:00
要注意cookie,我用Python && requests库给你一个example

import requests
s=requests.Session()
s.headers.update({'Referer': 'http://www.sostart.com/'})
s.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'})
# 保存cookie到session中
r1=s.get('http://www.sostart.com')

import time
r2=s.get("http://www.sostart.com/api.php?_={}".format(int(time.time())*1000))
print r2.json()


Out:
[{u'album': u'Origin',
u'artist': u'Evanescence',
u'cover': u'http://img3.douban.com/lpic/s2362221.jpg',
u'id': u'449',
u'source': u'http://sostartradio-songs.stor.sinaapp.com/201307/449.mp3',
u'title': u'My Immortal'},
...
zhonghua
2014-01-04 11:24:00 +08:00
@dorentus
@9hills 感谢已发送

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

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

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

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

© 2021 V2EX