正常浏览器访问京东的商品页,可看到红色的价格,并且查看html代码可看到价格是文本格式。
我用爬虫访问时,返回的html代码没有价格,我尝试修改爬虫的user-agent为chrome,但是仍然没用。有人知道。京东是采用什么原理进行屏蔽的么
我用爬虫访问时,返回的html代码没有价格,我尝试修改爬虫的user-agent为chrome,但是仍然没用。有人知道。京东是采用什么原理进行屏蔽的么
|
lerryMay 30, 2012
1
京东的网页,红色的价格是图片,源码看不到的,只能看到“市场价”,你能看到?发个链接?
|
|
9hillsMay 30, 2012
2
是图片无误,用OCR吧
|
|
road2statMay 30, 2012
3
用 tcpdump + Wireshark 之类的分析一下京东 iOS app 的私有 API 就可以了。你懂的。
|
|
5
两步可以拿到。
1. 模拟点击"加入购物车",拿到 cookie 2. 用这个 cookie 去访问 http://cart.360buy.com/cart/cart.html 绝大部分的购物网站可以用这个办法解决。 |
|
road2statMay 30, 2012
6
@9hills 我跟了一下,没有使用 SSL / OAuth 之类的东西,就是一个简单的请求,返回一个简单的 JSON,你也可以做下实验。
即使是加上 SSL 的普通请求,也可以自建中间人把加密包解开然后进行分析。但是如果加上了 OAuth 的私钥什么的,可能会比较困难。 |
|
aa88kkMay 30, 2012
8
抓下图片, 然后用tesseract去识别, 某淘就是这么干的.
|
|
9
function jdPshowRecommend(url,stype) {
var title = "CAMEL/骆驼 2012新款男款纯棉短袖t恤透气休闲翻领polo衫夏季新品 017308 男款军绿 XL直降108 限时抢购 送给父亲最好的礼物 仅限30日"; var content = "我在@京东商城 发现了一个非常不错的商品:CAMEL/骆驼 2012新款男款纯棉短袖t恤透气休闲翻领polo衫夏季新品 017308 男款军绿 XL直降108 限时抢购 送给父亲最好的礼物 仅限30日,京东价:¥276.00。感觉不错,分享一下"; 看到这个微博分享的JS里面就有京东价了吧。。。京东还用图片来屏蔽个毛啊.... |
|
saricesMay 30, 2012
13
我之前都是用分享按钮的价格,不明白京东为何用图片显示
|
|
wateryeMay 30, 2012
14
我猜是技术部门不同项目组独立干,没有统一规则。
|
|
kamalMay 30, 2012
15
LOL 网页里面直接输出了
function jdPshowRecommend(url,stype) |
|
tokkiMay 30, 2012
16
这好玩 以后我要抓什么东西了 就发动一下大家一起来研究 太有趣了
|
|
cMay 30, 2012
17
收藏。我以为ocr是唯一的解决方案,没想到学习了这么多。
|
|
18
@9hills 我发现图书产品页不是图片 http://book.360buy.com/10058893.html
|
|
kxboyMay 30, 2012
22
这个帖子我喜欢,我前一段时间为此困扰好久。
|
|
Air_MuMay 30, 2012
23
<script type="text/javascript">
function jdPshowRecommend(url,stype) { var title = "摩托罗拉(Motorola)ME722 3G手机(精锐蓝)WCDMA/GSM"; var content = "我在@京东商城 发现了一个非常不错的商品:摩托罗拉(Motorola)ME722 3G手机(精锐蓝)WCDMA/GSM,京东价:¥1458.00。感觉不错,分享一下"; var img ="http://img10.360buyimg.com/n1/4332/6e812b1c-2cbe-4bb2-a313-207121b32684.jpg"; var productUrl ="http://www.360buy.com/product/342079.html?sid="; var pin = readCookie("pin")||""; if (stype == "qzone") { url = url + "&title=" + content + "&pic=" + img + "&url=" + productUrl + pin; } if (stype == "sina") { url = url + "&title=" + encodeURIComponent(content) + "&pic=" + encodeURIComponent(img) + "&url=" + encodeURIComponent(productUrl) + pin; PostSinaDate(); window.open(url, "", "height=500, width=600"); } if (stype == "renren") { url = url + "title=" + title +"&content="+ content + "&pic=" + img + "&url=" + productUrl + pin; } if (stype == "kaixing") { url = url + "rtitle=" + title + "&rcontent=" + content + "&rurl=" + productUrl + pin; } if (stype == "douban") { url = url + "title=" + title + "&comment=" + content + "&url=" + productUrl + pin; } if (stype == "MSN") { url = url + "url=" + productUrl + pin + "&title=" + title + "&description=" + content + "&screenshot=" + img; } if (stype != "sina") { window.open(encodeURI(url), "", "height=500, width=600"); } } //新浪分享POST数据 |
|
hnpdslyfMay 30, 2012
24
识别图片也不难啊,那么整齐的数字,分块对比一下就行
|
|
asnideaMay 31, 2012
25
不错,mark下
|
|
aerofloydMay 31, 2012
26
感谢。。
|
|
vexfisherJun 3, 2012
28
同上
一个商品有N中属性组合,不同的属性组合对应的价格是不同的,所以这个JS函数的价格仅供参考啊 |
|
cangbaotuMay 16, 2016
29
你可以参考这篇教程,里面专门讲了如何写这类爬虫(异步加载,代码在神箭手云爬虫上可以直接跑): http://blog.csdn.net/youmumzcs/article/details/51385856
|