大家都知道,京东为了防止其他网站对其商品价格的抓取将商品的价格做成了图片。我们现在网站也想弄成这样的,就是将我们的商品的价格也弄成图片形式的。大家知道这种显示图片价格做法的思路是什么啊?
我的想法是:编写一个生成价格图片的方法,将商品的价格通过加密方式发送到该方法,然后在方法中先将价格解密,然后将价格生成一个图片,然后返回一个<IMG>的HTML放到页面中,图片地址指向刚才生成的图片。
现在如果我这样做的话会产生好多的图片,这样页面加载时会不会很慢啊?而且每当打开页面时每件商品中的价格都要去执行生成图片的方法。
大家有没有比较好的方法啊?希望得到大家的指点,共同讨论一下。。。
------解决方案--------------------------------------------------------
文字生成图片
------解决方案--------------------------------------------------------
Refer:
http://www.cnblogs.com/insus/articles/1406122
------解决方案--------------------------------------------------------
后台添加价格时生成图片 图片名字用当时的时间字符串+随机数,就像上传图片带缩略图的那种 这样应该没有缓存的问题了
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
楼主没必要这样做,如果需要获取贵公司的价格,哪怕你是图片,都可以解析出来,你又何必在乎这么多呢?
------解决方案--------------------------------------------------------
对于节约性能,我比较赞同1楼的方式。但是输出的内容如果有据可循,对特别针对性的爬虫会失去作用。所以需要考虑下实现思路上的混淆技巧。
------解决方案--------------------------------------------------------
验证码的思路去做就阔仪了。
------解决方案--------------------------------------------------------
楼主知道验证码怎么生成的吗,一样一样一样地,不知道的话搜搜验证码生成就行
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
个人觉得这个和验证码控件没什么分别啊,只是将验证码里的那些字母换成你的商品价格,不用随机生成,大概就是这个样子啊
------解决方案--------------------------------------------------------
- C# code
private void GetstringImg(string outstring, int with, int height, Color color) { Bitmap imgage = new Bitmap(with,height); Graphics g = Graphics.FromImage(imgage); Font font = new Font("宋体",12, FontStyle.Bold); SolidBrush brush = new SolidBrush(color); g.Clear(Color.White); StringFormat format = new StringFormat(); g.DrawString(outstring, font, brush, 0,0,format); MemoryStream ms = new MemoryStream(); imgage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); content.Response.ClearContent(); content.Response.ContentType = "image/pjpeg"; content.Response.BinaryWrite(ms.ToArray()); }调用:GetstringImg("189.00",30,10,Color.Red);