搜档网
当前位置:搜档网 › 验证码的生成

验证码的生成

验证码的生成
验证码的生成

验证码的生成

一.验证码的分类

验证码根据其内容大致可以分为三类:字符验证码(Text.Based CAPTCHA),图像验证码(Image.Based CAPTCHA),以及视频语音等验证码(Other CAPTCHA),其中每一大类又包含若干子类。

1.1 字符验证码

此类验证码是目前网络中的主流验证码,绝大多数网站均采用此类验证码。该验证码首先随机产生的一串字符,然后对字符进行一些处理,最后以图片的形式显示给用户,用户需要正确输入图片上的文字来完成验证。每次页面加载时会产生不同的字符序列,可以抵御简单的自动攻击[1]。简单的验证码示例如下图所示:

没有干扰,字符固定:有干扰噪声点:

字符角度随机旋转并有干扰线:有干扰字符:

字符扭曲变形并有粘连:

其他:

1.2 图像验证码

尽管字符验证码具有诸多优点,然而字符验证码有一个难以避免的缺点:为了安全性增加字符扭曲粘连难度无疑降低了用户体验,部分网站验证码使得用户都难以看清,甚至需要刷新多次才能输入正确,影响用户浏览兴致。因此,即基于图像的验证码悄然兴起,也开始慢慢的普及起来,这种验证码的特点是趣味性高,解答清晰。图像验证码的示例如下图所示:

图1.1 选图验证码

图1.2 滑动验证码

1.3 其他验证码

如。如Gif动画验证码,手机短信验证码,视频验证码,语音验证码等

二.针对字符验证码的生成算法设计

字符验证码的主要设计思路:主要分为前景图层和干扰图层的设计[2]。其中,前景层主要是随机产生字符串,并对字符串进行一些特殊处理,如扩大字符库规模,设置多种字体,对字体进行随机形变处理、随机旋转字符、字符粘连等。而干扰图层主要是生成一些干扰点、干扰线、字符等其他干扰因素,用于干扰和混淆图形验证码中的验证字符串,从而有效地加大图片识别难度,使其成为真正实用的验证码。最后将验证码绘制在有干扰点的背景图片上,用图片形式显示出系统给的随机码。

2.1随机产生字符

在选取候选字符时,首先会考虑数字和英文字符或者两者叠加使用,还可以考虑使用汉字字符,数字字符可取0~9,英文字符可选取26个英文字母,其中,考虑到英文字母有大小写,可增加候选字符数组长度。相比于数字和英文,汉字可选取的范围就大的多得多。2.2字符变形

为了增加程序识别难度,必要的方法是尽量增加特征量库,使验证码能随机地具有不同的特征及特征值。

a)为每一个验证码汉字随机设置不同的字体,且字符字体是随机的,因此一个图形验证码中包含了各种不同的字体,不利于程序破解。

b)为每一个验证码随机的选择形变值,使每一个字符都有不同的形变结果,使简单的破解算法失效。在这个方面,笔者设置的变形效果包括:字符随机向左扭曲、字符随机向右扭曲、进行放大镜效果处理,每一个字符经过这三种变换中的其中一种变换后,最后再进行随机旋转处理。

(a)字符随机向左、向右扭曲为了字符有扭曲效果,使程序难以辨别,但又不对人眼识别造成障碍,使这一个字符像素中的任意一行像素点相对应于上一行有0或1个像素宽度的

向左(向右)偏差,任意一行的向左(向右)偏差值是由代码随机确定的。之所以选择0或1个像素宽度,是因为如果偏移量太多,会造成字符难以辨认;而如果都选择1个宽度,则相当于倾斜了45。,不会有扭曲的效果。经过这样的处理以后,字符有向左(向右)倾斜并有扭曲

的趋势,破坏了汉字规则整齐的田字型结构,如图2.1(a)、(b)所示。

(b)进行放大镜效果处理。除了扭曲效果外,也可以对每个字符的不同部分进行放大或缩小处理,但这种放大或缩小必须是连续而缓慢的,否则容易造成人眼识别困难。

图2.1 形变效果示例图

(c)随机旋转处理。单个字符经过扭曲或放大镜处理后,再对其进行随机旋转处理,使其随机顺时针或逆时针以字符中心点为圆心随机旋转0~150度。

由于现在图像处理技术和ORC技术的成熟,以上这些针对单个字符的形变处理就显得不十分可靠。当N个字符组合为一个图形验证码时,如果能使其互相粘连为一个完整的不易被正确分割的整体时,则程序识别时首先要将其正确的分割为N个部分后才能进行各个字符的识别,若它不能进行正确的分割,则就不可能进行正确的识别。因此,这样做会给程序识别带来非常巨大的困难,而这正是产生文本验证码的重点所在。但是这并不是说对单个字符的形变处理就变得可有可无。正是因为字符不再具有字符原本的归整结构,才使程序分割时难以有特征可寻,降低了分割的正确率和单个字符匹配的正确率。

2.3 宇符粘连

使字符粘连,给程序分割造成障碍。主要分为以下四个步骤:

a)去除字符间的空白背景。为了使每个字符变形时不破坏旁边字符的结构,让各个字符之间都间隔得比较远,因此经过变形后的每个字符之间,都还存在着一定的空白。而变形之后的字符所占的高、宽像素值及起始位置都发生了变化,为了去除字符间的空白背景,先要计算每个字符所占宽度的起始位置。绝大多数的字符经过各种变形后,发现其在横轴上的投影

仍然是连续的,因此决定以设定的字符颜色在横轴上的投影起始坐标作为字符的宽度起始值。然而代码试验后却发现了一个有趣的现象。用Java程序在BMP或JPEG图像格式中显示经过各种变换的中文字符时,并非所有字符像素点的颜色都是设定的颜色c系列的,字符颜色会与背景颜色在颜色上有所交互影响,使这个汉字整体上看上去仍是C颜色的,但实际上它却包含了除c颜色外的一些其他颜色,特别是字符与背景交接的边缘。例如,当设定g.setBackground(color.yellow);g.setcolor(color.blue)时,放大图像后会发现字符边缘出现了除蓝色和黄色之外还有其他颜色,如淡绿色、青色、褐色等。因此笔者以不是背景颜色的像素点在横轴上的投影起始点作为字符的宽度起始值,把Ⅳ个字符的起始值记录下来,然后据此消除字符之间的空白部分,同时缩短整个图形宽度。从记录下来的字符宽度可以看出,经过变形后的字符宽度也呈现随机性,使一些根据字符所占宽度来进行分割字符的算法失效。算法描述如下:

CharacterWidth(b)

(a)设置标志量sign为假;

(b)对于b中的每一列像素:

若sign为假.且这一列包含字符像素,则存储这一列的横轴坐标值作为一个字符的宽度起始值,并且设置sign为真;若sign为真,且这一列不包含字符像素,则存储上一列的

横轴坐标值作为一个字符的宽度结束值,并且设置sign为假;

(c)对于前(N一1)个字符:

若这个字符与下个字符在宽度上存在空白间隔,则移除间隔部分,并根据移除的间隔宽度重新计算后面所有字符的宽度起始值;

(d)返回b。

b)随机上、下移动字符。有了各个字符的起始位置后,随机产生一个-5~5的整数,并依据这个随机数向上移动或向下移动每一个字符,使各个字符之间产生一定程度的错落感,这样做主要是有助于人眼识别,并且能使各个字符的位置更加随机化.增加机器分割的难度。

c)字符拥挤效果。经过上述步骤处理后,实验出来的图像仍没有理想中那种拥挤的感觉,主要问题就在于字符与背景交接的边缘存在其他色系。而这种衍生出来的色系在字符主体的外围边缘上要占到1—3个像素,因此去掉这些衍生色系的像素不会影响到字符主体。在代码中,为了使字符尽量拥挤但又不能影响人的识别,笔者把每一个字符的宽度起始值增加

2个像素值,而把结束值缩小2个像素值,即删除字符中的前2列和最后2列像素。由于删除的像素对字符整体的影响很小,各个汉字的构造差别也比较大,几乎不会影响人对整个字符的识别。但是对于机器来说,经过这个步骤的处理后,各个字符之间可能已经粘连在一起,很难用连通域法[6]和横轴映射法[6]将其分割开来。由于汉字的构造比较复杂,即使在每一个字符的随机位置处画一条一个像素宽度的背景色系的线段.人也能根据汉字的左右结构而识别出这个汉字来,因此对人的识别不会造成困难。但是这样一来,机器程序就难以判断到底哪几个部分构成了单个汉字,不利于它进行分割。

三.干扰图层设计

干扰图层中的干扰信息是由干扰点、线、字符等其他干扰因素组成,其中这些干扰因素都可以是位置随机、颜色随机、字体随机、倾斜度随机等,且其中的干扰字符取自于同样候选字符数组,增加了干扰字符串与验证字符串的相似性,使其更不易被恶意程序所区别,降低了网络应用系统被成功攻击的可能性。

3.1随机产生干扰点

可在背景图片中添加指定个数的干扰点,干扰点颜色随机,位置随机(但不能影响验证码字符)。

3.2 随机产生干扰线

在图形上随机显示数十条长短不一致的干扰线,这些线的颜色可与字体颜色一致,用来干扰程序识别。经过上述各种步骤处理之后,可以得到如图2所示的各种验证码图片。这里令字体颜色为蓝色,背景颜色为黄色。当然也可以设置随机的背景色和字体颜色,以增加特征量。

3.3 随机产生背景字符

生成一个随机长度的位置随机、颜色随机、字体随机、倾斜度随机的字符串,并且取自于与前面同样候选字符数组,增加了干扰字符串与验证字符串的相似性。

字符的个数、位置、倾斜度和颜色是利用.NET—Framework提供的随机甬数Random()来控制的。干扰字符取自于候选字符数组source中,这个.source数组由字母和数字组成。首先,由一个随机对象rback—num来生成干扰图层的字符个数num,num的值由验证码图片的大小及其每个字符的大小决定。然后运用循环结构,设置在候选字符数组source中随机生成的每个字符的随机位置、随机颜色和随机倾斜度。并且需要设置一个标记值sign,来标记num个字符中是否位置重合。最后将生成的这些干扰字符串保存为一个图层对象,其生成的主要代码如下:

Random rbacknum=new Random():

//控制背景字符个数

intnuml=rhacknum.Next(5,lO);

for(inti=0;i

{intibacknum=rbaeknum.Next(source.Len殍h);

SolidBrush b=new SolidBrush(Color.FromArgb(rdl.Next

(255),rdl.Next(255),rdl.Next(255)));

intxbp 2 rdl.Next(rc.Width-2);

//字符位置随机

intybp=nil.Next(咒.Height-2);

//背景层字符颜色随机,字体大小和型号随机

gh.DrawString(80111"C圮[ibaeknum],new Font(fonts[rdl.

Next(fonts.Length)],rdl.Next(myPlatete.Height/4)),b,xbp,

ybp);.

}

[1] K Chellapilla,K Larson ,PY Simard,M Czerwinski. Computers beat Humans at Single Character Recognition in Reading based Human Interaction Proofs (HIPs)[J]. Conference on Email & Anti-spam 2005

[2]胡征兵,路红,廖龙龙. 基于多图层的图形验证码生成技术研究[J]. COMPUTER AND MODERNIZATION2011, (2)

[6]YAN J,AHMAD A S E.A low--corn attack on a microsoft CAPTCHA[C]//Proe of the 15th ACM Conference on Computer and Communi.cations Security,New York:ACM,2008:543.554.

短信营销大全

短信营销大全 众所周知节日一向是大家最爱的,大家都是想着购买一些“打折优惠商品”,而商家们心里乐开了花,又该趁机忙活大赚一笔了,但是怎样抓住这一个促销狂欢节,带动用户参与呢?利用营销短信无疑是商家直接有效省钱的方式,但很多商家在使用短信营销的时候说不会编辑内容,确实好的文案才有足够的营销力。 第一、较为常见的 对于一些实在写不出好的营销短信的时候,可以采用较为常见的短信模板,即签名+昵称+营销主题+活动时间+店铺地址。 例【xx专卖店】尊敬的客户,迎春节好礼送不停,凭短信到店购买xx商品享受xx折优惠,更有优惠大礼包等你免费领取,数量有限,先到先得,提前预定电话:xx,地址:xx!退订回T 【xxx汽车店】尊敬的客户,迎春节本店举行买减优惠活动,凡是xx月x 日到x日进店购买指定车型,享有车险免费送以及购车增值税减免政策,详询:xx,地址:xx!退订回T 第二、活动主题+卖点 众所周知春节本身就是很好的宣传,再结合春节的卖点:包邮、抽奖、优惠券、秒杀等等,这些就是在你的短信内容里可以突出吸引客户的卖点。 例【xx店】尊敬的xx,春节新品预售开启,精美xx商品付100抵40,前

3000名送108大礼包!提前购热线:17xx!退订回T 【xx店】尊敬的xx,春节预售火爆预订中,预付10元抵20!部分尺码已缺货,热销爆款再补货,300款品牌团60元起开抢,退订回T 第三、品牌+产品的定位 从品牌的卖点、品牌的调性、产品的特色去做深层次的内容挖掘,找出共性及消费者能够产生共鸣的点。然后将这些点植入到品牌营销的内容之中。例如淘一提到“亲”、“尊敬的xx”大家就能想到淘宝。 例【xx专卖店】亲春节,送好礼,给你一个不一样的节日盛宴,xx服饰xx 活动隆重启动,全场xx折惠!感谢一路有您!我们期待您的光临!详询xxx!退订回T 【xx服装店】尊敬xx,xxx店喜迎春节,xx月xx至xx日VIP购物1件享xx折,两件享xx折,进店凭短信可获xx精美礼品一份!期待您的光临!详询17xxx!退订回T 第四、用户细分+喜好 用户细分是希望挖掘出客户的购买喜好,然后针对不同细分组的客户可以给他推送不同的营销内容。要知道不同的客户关注的点和他购买初衷都是不同的。 例【xx商家】亲,春节来了,这一次不要要再错过!全场五折包邮外加五十元优惠券送上,记得提前收藏哦!退订回T 【xx商家】亲,还记得去年春节您与我的那场约会吗?一周年到了,奉上五十元的约会基金(春节使用),期待您的到来!退订回T

自动生成验证码图片的工具类,收藏起来备用。

[原]自动生成验证码图片的工具类,收藏起来备用。用法:直接调用其静态方法即可。 Map map = ImageUtil.getImage();//获取图片,将图片转换成InputStream流 String key = map.keySet().iterator().next();//获取图片上的字符 BufferedImage image = map.get(key);//获取BufferedImage,赋值给imageStream其中,String为验证码的值,BufferedImage为验证码的图片。 该工具类的代码如下:ImageUtil.java package action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; public final class ImageUtil { private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "东", "南", "西", "北", "中", "发", "白" }; private static final int SIZE = 5;//验证码长度 private static final int LINES = 20;//干扰线条数 private static final int WIDTH = 200;//图片宽度 private static final int HEIGHT = 100;//图片高度 private static final int FONT_SIZE = 60;//字体高度 public static Map getImage() { StringBuffer sb = new StringBuffer(); BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics graphic = image.getGraphics(); graphic.setColor(Color.LIGHT_GRAY); graphic.fillRect(0, 0, WIDTH, HEIGHT); Random ran = new Random(); //画随机字符 for(int i=1;i<=SIZE;i++){ int r = ran.nextInt(chars.length); graphic.setColor(getRandomColor()); graphic.setFont(new Font(null,Font.BOLD+Font.ITALIC,FONT_SIZE));

jsp页面验证码源代码

jsp页面验证码源代码 在java后台中生成验证码的ImageIO传到前端页面显示,同时把验证码的v alue值传入session 中用于与用户输入的验证码进行匹配,在用户验证中使用ajax技术,在不刷新页面的同时进行验证码验证。 程序结构图: VerifyCodeUtils程序主要内容为通过Java生成验证码的图片,以及验证码的value值,程序如下: package utils; import java.awt.Color; import java.awt.Font;

import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; publicclass VerifyCodeUtils { privatestatic BufferedImage image = null; privatestatic Random random = new Random(); //在自己定义的一些数中,生成4位随机数 publicstatic String getVerifyCode() { String str = ""; char[] code = newchar[]{'A','B','C','D','E','F','G','H','I ','J','K','L','M','N','P','Q','R','S','T','U', 'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',' j','k','m','n','p','q','r','s','t', 'u','v','w','x','y','z','2','3','4','5','6','7','8','9'}; Random random = new Random(); for(int i = 0; i <4; i++) { str += String.valueOf(code[random.nextInt(code.length)]); } return str; }

C#生成随机验证码例子

C#生成随机验证码例子: 前端: 1 2 3验证码: 4 5 6 给验证码图片绑定单击事件: $("#valiateCode").click(function () { $("#imgCode").attr("src",$("#imgCode").attr("src")+1); }); 后台生成验证码图片代码: ValidateCode.ashx 1 <%@ WebHandler Language="C#" Class="ValidateCode" %> 2 3using System; 4using System.Web; 5using System.Drawing; 6using System.Web.SessionState; 7 8public class ValidateCode : IHttpHandler, IRequiresSessionState 9 { 10 HttpContext context; 11public void ProcessRequest (HttpContext context1) { 12this.context = context1; 13 CreateCheckCodeImage(GenerateCheckCode()); 14 }

JSP生成验证码_源代码

jsp验证码实现源代码 (2011-10-16 11:11:40) 验证码原理:①首先随机生成数字或字母;②把生成的数字或字母保存在Session这次会话中;③最后,在登陆页面上把接收用户输入的验证码与生成的验证码相匹配,成功返回TRUE,失败则返回FALSE; 演示程序包括三个文件: 1.login.jsp:登录页面 2.code.jsp:生成验证码图片页面 3.check.jsp:验证结果 code.jsp <%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" %> <% // 在内存中创建图象 int width=60, height=20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); // 设定背景色 g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, width, height); //画边框 g.setColor(Color.black); g.drawRect(0,0,width-1,height-1); // 随机产生的认证码(4位数字) String rand =""+ (Math.random()*10000); rand = rand.substring(0,rand.indexOf(".")); switch(rand.length()) { case 1: rand = "000"+rand; break; case 2: rand = "00"+rand; break; case 3: rand = "0"+rand; break; default: rand = rand.substring(0,4); break; }

c#生成验证码的方法

新建一个WaterMark.ASHX文件,将如下代码Copy进去 <%@ WebHandler Language="C#" Class="WaterMark" %> using System; using System.Web; using System.Drawing; using System.Drawing.Drawing2D; using System.Web.SessionState; public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间 { public void ProcessRequest(HttpContext context) { string checkCode = GenCode(5); // 产生5位随机字符 context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证 System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); // 画图片的背景噪音线 int i; for (i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true); g.DrawString(checkCode, font, brush, 2, 2);

符号大全

QQ起昵称专用特效字符 ︻︼︽︾??????〇? ??■▓「」『』????▼▽????? ?№????↘↙Χ※㊣ⅲ??【】〕〖@μδω□?〒※》ⅱ卐ⅳ ╳???ⅵ?ㄨ?╬╭╮╰╯╱╲ ? ? ? ? ? ? ? ? ????? ??????????????? QQ特殊符号大全 A、希腊字母大写ΑΒΓΓΔΕΖΘΗΚⅸΜΝΞΟⅱΡⅲΤΥΦΦΧΨ B、希腊字母小写αβγδεδεζηθικλμνπξζηυθχψω C、俄文字母大写 АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ D、俄文字母小写абвгде?жзийклмнопрстуфхцчшщъыьэюя E、注音符号??ㄓㄚㄞㄢㄦ?ーㄍㄐㄔㄗㄧㄛㄟㄣ?ヽㄎㄑㄕㄘㄨㄜㄠㄤ?ㄏㄒㄖㄙㄩㄝㄡㄥ F、拼音 ǎ 、ō ǒ 、 、 ǐ 、ū ǔ 、ǖ ǘ ǚ ǜ G、日文平假名〗?ぅぇぉかきくけこんさしすせそたちつってとゐなにぬねのはひふへほゑまみむめもゃゅょゎを H、日文片假名?ィゥヴェォカヵキクケヶコサシスセソタチツッテトヰンナニヌネノハヒフヘホヱマミムメモャュョヮヲ I、标点符号ˉˇ ‘’?~‖?”’‘|〃〓〔《》「」『』.〕〖【【】()〓〔{} J、数字序号ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ??←↑→↓??↖↗一二三四五六七八九十 K、数学符号???=??<>??? +- / ??ⅴⅵⅸⅹⅲⅱ??ⅰ???‖ⅶ????ⅳ L、单位符号 ′〃$??‰%℃ ? M、制表符 ┌┍┎┏┐┑┒┓—┄┈├┝┞┟┠┡┢┣|┆┊┬┭┮┯┰┱┲┳┼┽┾┿╀╂╁╃ N、特殊符号 №???????□■??※????〒#&@\^_ O、补充收集??????Θ? ㊣? ? ? ? ? ? ? ? ■ ▓ 回□ 〒? ╝╚╔ ╗╬ ? ╓ ╩ ┠ ┨┯ ┷┏ ┓┗ ┛┳?『』┌???????▼?▽? ?.1 ??????Θ? ㊣?????????▼?▽?? ?? ?.2 ? ? ? ? ■ ▓ 回□ 〒? ╝╚╔ ╗╬ ? ╓ ╩ ┠ ┨┯ ┷┏? ?.3 ┓┗ ┛┳?﹃﹄┌ ┐└ ┘∟「」????↘↙??┇┅ ??﹉﹊╭? ?.4 ╮╰ ╯ *^_^* ^*^ ^-^ ^_^ ^︵^ ??‖︱︳︴﹋??︵︶︹︺?

史上最新最全印度易瑞沙真假鉴别大全

史上最新最全印度易瑞沙真假鉴别大全---201503更新 发表于 2014-04-13 已阅读61747次 原先曾在好大夫网站发表过,后来删除了。现在重新发出来!!内容暂时还不过时。 建议大家看最新更新的内容,中间的部分内容可以跳过!尤其是中间的过时的图片! 我的上一篇文章《谋财害命--假药印度易瑞沙格列卫的危害!》发表以后,好多网友向我询问易瑞沙真假的问题。为了帮助更多网友及减轻我自己的负担,我特地把我近几年关于易瑞沙真假鉴别全部汇总,向大家一一说明。另外说明一下,我工作繁忙,没有义务为大家鉴别真假,请不要在QQ中让我鉴别了。 我刚接触阿斯利康公司的易瑞沙是在2006年,那时候大多数人还不清楚这个药,只知道是治疗肺癌的,对有些病人治疗效果很好。过了2年,即2008年,有病人说有印度生产的易瑞沙,而且价格便宜,治疗效果相同。我才慢慢开始接触到印度的易瑞沙。有病人从印度带回些药,发现吃了以后确实效果不错。尤其是腺癌病人。 需要说明的是,很多医生都说此药针对的是“不吸烟的女性肺腺癌”,这是刚开始的实验结果,时间长了就流传开了。具体机制大家反而不清楚了。但实际上我发现,其实这样说只是使说话更符合中国的习惯,真正的重点是1、腺癌,2女性,3,不吸烟。为什么这样说,其实对于大多数亚洲女性来说吸烟的很少,而且女性肺癌当中腺癌占了大多数,男性鳞癌占大多数。所以这句话应该有侧重点。首先要强调是肺腺癌。因为我的这么多的病人当中,吃易瑞沙后存活时间最长(都超过2年)的有十几个人,其中只有3个是男性,都是腺癌。而鳞癌的效果就不好了,最长的即使吃特罗凯也只维持了12个月。所以,肺腺癌是最关键的。 另外,接下来的一些研究发现,其实易瑞沙这样的靶向药物最关键还是因为病人的基因变异:EGFR突变,腺癌突变的几率高,女性突变的几率也高而已。所以现在大医院一般要求病人做基因变异检测,然后根据结果选择是否使用易瑞沙——因为阿斯利康公司的易瑞沙是15000一个月的。检测费用大概是1500-2800之间(根据检测靶点的个数决定)。最常见的变异是19和21位点的变异,如果出现变异(阳性),吃易瑞沙的有效率超过90%,效果甚至比化疗还要好(这就是所谓的一线治疗)。 言归正传,印度某些产业(比如说包装业)相比中国要落后20年左右,所以生产的东西包装很粗糙,这一点大家见过药品就知道了——根本不像几千块钱的东西。尤其是早期产品,没有换包装之前,很容易仿制。再说说假货来源:最以假乱真的莫过于所谓的“杭州版”,市面上尤其是大城市如北京,最多的就是这个版本。由于仿真度极高而且大多数含有吉非替尼成分,能产生治疗效果,极受欢迎,占到所有假货的70-80%左右。可能是由于最早生产于杭州,所以叫杭州版。最最可怕的是,有些网站竟然用这种高仿版作为真品卖,同时旁边还有所谓的“鉴别方法”,而这些鉴别方法都是引大家到误区里面的。这种欺骗性极高,90%的人都会上当!!下面我会谈到可行的鉴别方法,而不是误导的骗局。 还有些低下小厂生产的,仿真度低,而且还会犯低级错误,如去年竟然还有人卖带有“NEW PACK”的仿版,而这早就不生产了。这种版本大家只要仔细留心,很难被骗。 一.最早的是正方形的小绿盒子,没有防伪标志,颜色很难看,而且即使是正品也会出现盒子表面绿色掉色的情况(呵呵,恐怖吧)。那个时期(到2009-2010年)是假货最猖獗的时期价格也是最高的时期,基本上在2400-2800元左右。但是后来由于假药太多,厂家不得不加上了防伪标志。但是假药依然很多,最后只好定期更换包装。所以,现在如果还有绿色的小盒子的易瑞沙,肯定都是假药!

实用的JavaScript验证码生成代码

实用的 JavaScript 验证码生成代码-JAVA:https://www.sodocs.net/doc/e511708390.html,