擷取外網IP並發送郵件通知

來源:互聯網
上載者:User

名稱: IP地址通知器
下載最新版  (在使用的過程中,如果您有什麼問題,請給我發郵件,或者在這裡(csdn我的部落格)上留言.)

版本: 1.26 正式版
作者: 闕榮文 - Que's C++ Studio
日期: 2010/11/10
著作權說明: 著作權歸作者個人所有,免費使用. 如果需要原始碼(Visual Studio 2008),請聯絡 querw@sina.com 購買.

設計目的
擷取原生外網IP地址,並且把IP地址發送到指定郵箱. 不支援使用代理串連的網路.

原理介紹
如果本機在公網上,或者通過撥號直接連接到公網,那麼原生IP地址就是外網IP.但是如果一台電腦在區域網路內,通過網關/路由器串連到Internet的話,
就必須要通過外部伺服器才能獲知本網的外網IP. 這個世界上有很多網頁會顯示訪問者的IP地址,IP地址通知器 V1.0 Beta 就是利用這一點,獲得指定
網頁中的IP地址資訊.

使用說明

1. 配置頁面

(1) 開機自動運行: 通過寫註冊表 "HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run" 實現. 如果在您的電腦上該選項無法工作,
有可能是因為目前使用者沒有讀寫註冊表的許可權,或者請求被第三方程式攔截. 比如360. 如果該選項起效,程式將會在Windows啟動後最小化運行.

(2) 運行程式後自動啟動: 程式運行後自動開始抓取IP地址.

(3) 總是報告IP地址: 未選中該選項時,只有在IP地址改變時,才會發送郵件通知或者運行指定命令.選中該選項可以使程式每次抓取IP成功後都報告.(發送
郵件或者運行指定命令.)
建議: 如果要選中該選項,請把"活動訊號間隔時間"設定為至多30分鐘以上,過於頻繁的發送郵件有可能會使您的郵件被認為是垃圾郵件.

(4) 啟用氣泡提示: 選中該選項時,程式會在報告IP地址的同時,在系統托盤區顯示一個氣泡提示.

(5) IP源: 提供IP地址的網頁, 必須以 "http://" 開頭.

(6) IP格式: IP地址在網頁源碼中的位置. IP格式總是要求包含至少一個 '*' 代表IP地址串 (相當於萬用字元),程式通過這個格式串抽取IP地址字串,而
不是整個網頁源碼.
其中: '*' 代表IP串,'*'代表的字串最長不能超過512個字元. '/r'代表斷行符號 '/n'代表換行 '/t' 代表TAB.

經過測試在2010/11/10時有效IP源和格式有如下幾個:
源: http://whatismyipaddress.com/ 格式: <span class="ip blue">*<!-- contact us before using (程式的預設設定)
源: http://www.ipchicken.com/ 格式: Address: /r/n            *            </font></td>
源: http://www.ip138.com/ip2city.asp 格式: 您的IP地址是:[*]

事實上有效IP源遠遠不知以上3個,只要填寫正確的格式串,幾乎所有可以顯示IP地址的網頁都可以成為本程式的IP源.

(7) 測試IP源: 可以在不修改配置的情況下,測試填入的IP源和格式,測試結果將顯示在日誌頁面.

(8) 檢測到IP地址改變後,發送郵件通知: 選中該選項時,如果程式檢測的IP地址發送改變,將會寄送電子郵件.
以下的幾個參數都是電子郵件相關的. 請注意填寫寄件者和收件者時,請直接填寫郵件地址xx@xx.com,而不要用類似帶<>的地址,如 "John<xx@xx.com>"
另外,由於所有的配置資訊都是明文儲存在程式目錄的 settings.ini 中,所以您填寫的密碼也是不安全的.
IP地址通知器 V1.0 Beta 還不支援使用安全通訊端的SMTP郵箱,比如 gmail.com, 給您造成的不便敬請諒解.

經過測試在2010/11/10時郵箱的SMTP伺服器有 smtp.sina.com.cn 和 smtp.163.com

(9) 檢測到IP地址改變後,隱藏檔,並以之為參數運行一下命令: 如果選中該項,程式在報告IP地址時,會先把IP地址在目前的目錄下儲存為一個檔案名稱為
"IP.TXT" 的UNICODE編碼的文字檔,並一該檔案路徑為參數調用指定的命令, 如果指定的命令為空白,那麼只隱藏檔.

2. 日誌頁面: 顯示程式運行過程中的輸出資訊.最多隻能儲存30000個字元,如果超出,將刪除前面200行.

3. 首頁面

(1) 清空日誌.

(2) 清除已記錄的IP: 程式在報告IP地址成功後(以下情況將被視為報告IP地址成功: 郵件發送成功或者運行命令成功或者使用者不要求報告IP地址即 1.(8)
和 1.(9) 兩個選項都未選中.)將記錄下這個IP地址,並顯示為視窗標題和氣泡提示. 如果報告失敗,比如在只選中發送郵件選項的情況下,並且郵件發送失敗.
那麼程式顯示的IP地址將不是最新的IP,而是上一次成功報告過的IP,也就是說,在這種情況下,程式顯示的結果和郵件顯示的結果是一致的. "清除已記錄的IP"
按鈕將會把這個值設定為 0.0.0.0.

(3) 運行/停止: 運行後,會立即抓取一次IP,並設定定時器. 關閉時,只會取消定時器,如果此時程式正在抓取IP或者發送郵件將會繼續完成.

(4) 退出.

---------------------------

 

程式啟動並執行介面如下:

 

 

 

 

--------------------

 

版本更新說明

 

2010-11-13 V1.01 Beta

 

修正: 在只選中郵件通知的情況下,一旦郵件發送失敗,也會儲存IP地址到本地. 這樣的話,使用者將沒辦法接收到最新的IP地址通知訊息.

修正: 不能正確識別UTF-16編碼的IP源.

修正: 程式內部轉換字元編碼時有棧溢出的風險,現在使用堆分配.

新增: 現在可以識別UTF-8編碼的IP源.

更新說明: 氣泡提示只在Windows XP以上的系統中有效果.

 

2010-11-15 V1.02 正式版

 

更新說明: "總是報告IP地址" 改為 "IP沒變也報告" 更容易理解.

 

2010-12-13 V1.04 正式版

更新: 啟用新的日誌系統,並移除,修改了一些日誌文本.

新增: 現在SMTP密碼以密文的形式儲存在設定檔中. (密文由原始密碼進過DES 和 BASE64變換後得到.) (更新後,需要重新輸入SMTP密碼.)

更新: 測試郵件和IP改變通知訊息的內容修改以更清晰的表述測試郵件和真實的IP通知訊息之間的區別.

更新: 現在郵件的主題中包含了主機名稱.

修正: 使用新的User-Agent發送HTTP請求以擷取更多的IP源支援. User-Agent: IPNotifier/1.04 (compatible; MSIE 8.00; Firefox 3.6; U; Windows;)

新增測試過的IP源:
源: http://www.showipaddress.com/ 格式: <h1 id="ip">IP address: *</h1>
源: http://www.ipaddresslocation.org/ 格式: <span class="myipaddress">&nbsp;/r/nb/r/n*/r/n309e/r/n</span>
源: http://www.find-ip-address.org/ 格式: IP Address Lookup - IP Finder for My IP (WAN IP) *</div></div></TD>
源: http://www.123myip.co.uk/ 格式: <h1 class="ip">*</h1>
源: http://www.ipaddressworld.com/ 格式: <FONT face="Verdana, Arial, Helvetica, Sans-serif" size=+6>*</FONT>

如果IPNotifier不能識別您需要的源,請聯絡 querw@sina.com
(IPNotifier是通過分析網頁原始碼讀取IP地址的,如果IP源運用了指令碼或者重新導向,就會讀取失敗.)

 

2010-12-17 V1.22 正式版

修正:  現在可以正確識別採用 chunked 分段編碼的IP源.

修正:  源: http://www.ipaddresslocation.org/ 的格式修正為: <span class="myipaddress">&nbsp;*</span>

 

修正:  允許處理的最大來源資料200K的臨界情況下,數組越界BUG已經被修正.

 

-------------------------------------------------------------------

後記

-------------------------------------------------------------------

 

    在調試的時候發現有時候會出現 "IP源返回 [HTTP 0]" 的日誌, 按照HTTP協議,伺服器響應碼應該是3個數字,從1XX到5XX,不允許出現0.這個問題困擾了我幾天,因為非常難重現,從代碼又看不出什麼問題. 最後加了幾行代碼,把HTTP = 0 的時候的記憶體現場儲存到檔案, 有守了好久終於抓到一次HTTP=0的情況,一看檔案才知道是電信插廣告到響應流中,把回應標頭改得亂七八糟引起的. 雖然對程式沒有影響,但是,中國電信!

 

    由於V1.04版作了比較多的修改,當時就應該把版本好升上去,所以在最後一次修改中把版本號碼升級到了1.2
經過這次修正後,IPNotifier將暫告一段落, 如果沒有重大的BUG我將不再更新.

 

-------------------------------------------------------------------

 

2011-06-21 V1.24 ( 感謝網友 fugou 的建議 )

更新: 預設的IP源改為: http://www.ip138.com/ip2city.asp 格式: 您的IP地址是:[*]

新增: 現在可以自訂通知訊息的內容, 用 @HOSTNAME 代表主機名稱, 用 @OLDIP 代表上一次的IP地址, 用 @NEWIP 代表最新獲得的IP地址.

 

2011-7-29 V1.26 (感謝網友 fugou, nanchang_key 的建議 )

新增: 現在可以自訂通知訊息的主題,用 @HOSTNAME 代表主機名稱, 用 @OLDIP 代表上一次的IP地址, 用 @NEWIP 代表最新獲得的IP地址.

新增: 現在可以設定多個收件者,收件者郵件地址用 [,] 或者 [;] 分隔,例如: [xxx@xxx.com,yyy@yyy.com;zzz@zzz.com]

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.