程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#編碼Email地址,防火防盜防垃圾郵件

C#編碼Email地址,防火防盜防垃圾郵件

編輯:C#入門知識

很多熱心的博友為方便幫助他人,在博客上留下自己Email地址。為防止垃圾郵件,把郵件地址以圖片的形式或以文本將@符號替換為(at)或#等形式發布。這樣難免給他人帶來一點不便。在浏覽衣兄博客時,發現其郵件鏈接有些有趣,稍研究了一下,原來是將郵件地址拆分並進行了編碼,看起來根本就不是郵件地址。這樣就可以越過那些"郵件地址采集器"。在實驗中發現將mailto:進行編碼,Outlook也能識別,其他郵件客戶端沒有進行測試。
花了一袋煙的功夫寫了個小工具。思路是:將郵件地址拼接成“mailto:[email protected]?Subject=”的形式,然後隨機拆分該字符串,編碼後賦值到javascript變量。最後將javascript變量相加。編碼方式是:將單字節字符編碼為%XX的形式,(unicode)雙字節字符編碼為uXXXX形式。具體實現見代碼。
生成的效果見公告欄。


多少粘點代碼吧(汗...)

// Divide the string to some parts.
protected List<string> PartString(string input)
{
    List<string> list = new List<string>();
    Random rnd = new Random(); 
    int len = input.Length;
    int idx = 0;

    while (len > 0)
    {
        int tmp = rnd.Next(1, len + 1);

        list.Add(input.Substring(idx, tmp));

        idx += tmp;
        len -= tmp;
    }

    return list;
}

// Encode string. ASCII: %xx format; double bytes: uxxxx format.
protected string EncodeString(string input)
{
    StringBuilder output = new StringBuilder(input.Length * 4);

    foreach (char c in input)
    {
        int charValue = (int)c;

        if (charValue > 255)
        {
            output.AppendFormat("\u{0:x4}", charValue);
        }
        else
        {
            output.AppendFormat("%{0:x2}", charValue);
        }
    }

    return output.ToString();
}

// Generate unique variable name.
protected string GenerateVarName()
{
    Random rnd = new Random();
    string output = ((char)((int)a
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved