geoipphp
❶ php判斷IP地址
這個PHP本身沒有辦法。是需要用PHP查資料庫的
目前常有的免費IP庫,是結真IP庫
❷ php怎麼獲取goaccess生成的報告內容
1、安裝GoAccess需要一些系統支持庫
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel
如果yum庫找不到Geo-IP 那麼需要單獨安裝了.
# cd /usr/local/src
# wget wget http://sourceforge.net/projects/goaccess/files/0.5/goaccess-0.5.tar.gz/download
# wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
安裝GeoIP庫
# tar xzvf GeoIP-1.4.6.tar.gz
# cd GeoIP-1.4.6
# ./configure && make && make install
# mv GeoIP.dat.gz /usr/local/share/GeoIP/
安裝goaccess
# tar xzvf goaccess-0.5.tar.gz
# cd goaccess-0.5
# ./configure --enable-geoip --enable-utf8 && make && make install
啟動參數介紹:
-b 流量消耗統計,如果想要提高解析速度,不要開啟這個選項。預設值為不開啟此選項
-f 日誌文件路徑。
-s HTTP 狀態碼報告,為了能夠更好的解析日誌,選項被默認關閉。
-e 指定IP地址的訪問統計。
-a 通過代理的請求統計。
❸ 網站建設:如何通過IP區分不同國家的用戶
這是為了讓不同的國度和習慣的訪客看到不一樣的信息, 避免誤導用戶產生多餘的交互行為或者因為頁面的不合理而感到不爽.上圖是最近我在頂部放置的廣告 banner. 上方紅色的是某網站聖誕節促銷活動的Affiliate 廣告, 中國大陸之外地區的訪客可以看到; 下方藍色的是最新發布的與我同行 Apply App 應用廣告, 只有中國大陸地區的訪客可以看到. 區分訪客國家有什麼用?這里是幾個我利用該功能的例子.區分網站功能 這個博客有翻譯文章的功能, 這是為了方便海外訪客閱讀文章, 但對中國人顯得十分多餘. 所以我通過 IP 判斷國家, 對中國大陸地區屏蔽翻譯功能.區分展示廣告 我在網站側邊欄放有廣告, 很多中文廣告對海外流量來說毫無意義, 所以我進行區分展示. 中國大陸地區在側邊欄最下方看到的是拿福能的廣告, 而其他地區看到的是 Google 的廣告. hostucan 是我的一個廣告主, 有英文網站, 也有中文網站, 所以我可以向他提供區分展示服務, 免得浪費流量.屏蔽布點服務 海外有很多好的服務平台, 在網站上布點即可採集數據和分享文章. 但很不幸, 因為某些原因, 他們在國內展示效果並不好, 不但沒有起到應有效果, 還讓頁面載入時間變長. 可以對大陸訪客屏蔽這些布點.在PHP 通過 IP 區分國家如何用 PHP 通過 IP 區分國家和地區呢? Maxmind.com 提供一套 GeoIP 的解決方案, 只需要簡單幾步即可在 PHP 中通過 IP 判斷訪客的國家.1. 下載資料庫和 PHP 庫文件下載GeoID.dat.gz, 解壓為 GeoIP.dat 文件.下載geoip.inc.2. 通過 PHP 代碼獲取國家信息 以下是一段示範代碼, 演示如何獲取國家代號和國家名稱.<?php // 引入 PHP 庫文件include("geoip.inc"); // 打開本地資料庫, 數據保存在 GeoIP 文件中.$geoData= geoip_open('GeoIP.dat', GEOIP_STANDARD); // 獲取國家 IP$countryCode= geoip_country_code_by_addr($geoData,$_SERVER['REMOTE_ADDR']); // 獲取國家名稱$countryName= geoip_country_name_by_addr($geoData,$_SERVER['REMOTE_ADDR']); // 關閉本地資料庫 geoip_close($geoData); ?>在WordPress 中通過 IP 區分國家既然PHP 上使用沒問題, WordPress 肯定也是 Okay 的. 看看我是怎麼使用的.1. 放置資料庫文件 將GeoIP.dat 解壓到 WordPress 根目錄中. (你可以在這個目錄找到 wp-content.php 文件)2. 編寫調用介面 在主題目錄中新建文件夾 include, 將 geoip.inc 放置在新建文件夾中. 並在該文件夾新建文件 geoip.php 文件內容如下.<?php include('geoip.inc'); global$countryCode; $geoData= geoip_open('GeoIP.dat', GEOIP_STANDARD);$countryCode= geoip_country_code_by_addr($geoData,$_SERVER['REMOTE_ADDR']); geoip_close($geoData); ?>這里只取國家代號作為判別依據. 並且國家代號是全局變數, 以避免頁面多處判斷需要反復訪問 GeoIP.dat 獲取信息, 減少程序開銷.2. 調用介面, 獲取國家代號 3. 打開 header.php 文件, 在文件頂部加入代碼如下.<?phpinclude('include/geoip.php');?>4. 使用國家代號 在主題中調用代碼, 例子如下.<?
❹ 怎麼用geoip屏蔽日本訪客,php的形式來判斷。我找到個代碼,但它是允許日本的,怎麼改成禁止日本
$country=='jp'修改為
$country != 'jp'
好了,就這么簡單~
❺ centos6.5 怎麼安裝GeoIP PECL擴展
安裝GEOIP
[root@i -it ~]# yum install GeoIP GeoIP-deve
##下載GeoIP的資料庫,有精確到國家和地區包括IPv6 自行選擇...###
[root@i -it ~]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
[root@i -it ~]# tar zxf GeoLiteCity.dat.gz
[root@i -it ~]# mv GeoIPCity.dat /data/seo/misc/GeoIPCity.dat
##下載GeoIP PECL擴展##
[root@i -it ~]# wget http://pecl.php.net/get/geoip-1.0.8.tg
##安裝##
[root@i-it ~]# tar zxf geoip-1.0.8.tgz
[root@i-it ~]# cd geoip-1.0.8
[root@i-it geoip-1.0.8]# /software/php/bin/phpize
[root@i-it geoip-1.0.8]# ./configure --with-php-config=/software/php/bin/php-config --with-geoip
[root@i-it geoip-1.0.8]# make && make install
###修改PHP配置文件###
[root@i-it seo]# vi /software/php/etc/php.ini
extension = "geoip.so"
###指定geoip數據的路徑##
geoip.custom_directory=/data/seo/misc/
❻ 如何在Linux上按國別阻止網路流量
作為一名維護生產環境Linux伺服器的系統管理員,在有些情況下,你需要根據地理位置,有選擇性地阻止或允許網路流量。比如說,你遇到了拒絕服務攻擊,這些攻擊主要源自在某一個國家注冊的IP地址。在其他情況下,出於安全方面的原因,你又想要阻止外國來歷不明SSH登錄請求;或者貴公司對在線視頻擁有發行權,因而只可以分發給某些國家;或者由於地域限制方面的公司政策,你需要防止本地主機將文檔上傳到非美國遠程雲存儲系統。
所有這些場景都需要能夠安裝一個防火牆,可以按國別對流量進行過濾。有幾種方法可以做到這一點。舉例說,你可以使用TCP包裝器(TCP wrapper),針對個別應用程序(比如SSH、NFS和httpd)設置有條件的阻止。其缺點是,你想要保護的那個應用程序在開發當初必須支持TCP包裝器。此外,TCP包裝器並非普遍出現在不同的平台上(比如說,Arch Linux已停止對TCP包裝器的支持)。另一種辦法就是,利用基於國家的GeoIP信息來設置ipset,然後將它運用於iptables規則。後一種方法更有希望,因為基於iptables的過濾與應用程序無關,而且易於設置。
我在本教程中將介紹另一種基於iptables的GeoIP過濾機制,這種機制實施了xtables-addons。有些讀者對它還不熟悉,所以有必要先介紹一下,xtables-addons是一套面向netfilter/iptables的擴展。xtables-addons內含了一個名為xt_geoip的模塊,該模塊擴展了netfilter/iptables的功能,可以根據來源/目的地國家,過濾、NAT或管理數據包。如果你想使用xt_geoip,不需要重新編譯內核或iptables,只需要構建xtables-addons模塊,並使用當前的內核構建環境(/lib/moles/`uname -r`/build)。也不需要重啟。一旦你構建並安裝好了xtables-addons,xt_geoip立即就可以與iptables結合使用。
至於xt_geoip和ipset之間的區別,官方來源(http://xtables-addons.sourceforge.net/geoip.php)提到,xt_geoip在內存佔用空間方面少於ipset。不過在匹配速度方面,基於散列的ipset可能具有優勢。
在本教程其餘部分,我會演示如何使用iptables/xt_geoip,根據來源/目的地國家,阻止網路流量。
將Xtables-addons安裝到Linux上
下面介紹如何編譯xtables-addons,並將它安裝到不同的Linux平台上。
想構建xtables-addons,你就需要先安裝幾個依賴程序包。
·將依賴程序包安裝到Debian、Ubuntu或Linux Mint上
$ sudo apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config
·將依賴程序包安裝到CentOS、RHEL或Fedora上
CentOS/RHEL 6需要先安裝EPEL軟體庫(面向perl-Text-CSV_XS)。
$ sudo yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS
編譯和安裝Xtables-addons
從官方網站(http://xtables-addons.sourceforge.net)下載最新的xtables-addons源代碼,然後構建/安裝它,如下所示。
$wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons
-2.10.tar.xz
$ tar xf xtables-addons-2.10.tar.xz
$ cd xtables-addons-2.10
$ ./configure
$ make
$ sudo make install
請注意:如果是默認情況下已啟用SELinux的基於紅帽的系統(CentOS、RHEL、Fedora),有必要調整SELinux策略,如下所示。要不然,SELinux會阻止iptables裝入xt_geoip模塊。
$ sudo chcon -vR --user=system_u /lib/moles/$(uname -r)/extra/*.ko
$ sudo chcon -vR --type=lib_t /lib64/xtables/*.so
為Xtables-addons安裝GeoIP資料庫
下一步是安裝GeoIP資料庫,xt_geoip將用到該資料庫,用於IP與國別映射。很方便的是,xtables-addons源程序包隨帶兩個幫助腳本,可分別用來從MaxMind下載GeoIP資料庫,並將它轉換成xt_geoip可識別的二進制格式。這些腳本位於源程序包裡面的geoip文件夾下面。按照下列說明,即可構建GeoIP資料庫,並將它安裝到你系統上。
$ cd geoip
$ ./xt_geoip_dl
$ ./xt_geoip_build GeoIPCountryWhois.csv
$ sudo mkdir -p /usr/share/xt_geoip
$ sudo cp -r {BE,LE} /usr/share/xt_geoip
據MaxMind聲稱,其GeoIP資料庫的准確性達到99.8%,資料庫更每月都更新。為了確保本地安裝的GeoIP資料庫內容最新,你就需要設置每月執行的計劃任務,以便每月更新一次本地GeoIP資料庫。
阻止來自或發往某個國家的網路流量
一旦xt_geoip模塊和GeoIP資料庫都已安裝好,你就可以立即使用iptables命令中的geoip匹配選項。
$ sudo iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
你想要阻止的國家使用兩個字母ISO3166代碼來指定,比如說US(美國)、CN(中國)、IN(印度)和FR(法國)。
比如說,如果你想阻止來自葉門(YE)和尚比亞(ZM)的入站流量,下面這個iptables命令就能實現。
$ sudo iptables -I INPUT -m geoip --src-cc YE,ZM -j DROP
如果你想阻止發往中國(CN)的出站流量,只要運行下面這個命令。
$ sudo iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
匹配條件也可以被「抵消」,只要將「!」放在「--src-cc」或「--dst-cc」的前面。比如說:
如果你想在伺服器上阻止所有非美國的入站流量,可以運行這個命令:
$ sudo iptables -I INPUT -m geoip ! --src-cc US -j DROP
針對Firewall-cmd用戶
像CentOS/RHEL 7或Fedora這一些發行版已將iptables換成firewalld,作為默認防火牆伺服器。在這類系統上,你同樣可以利用xt_geoip,使用firewall-cmd阻止流量。上面三個例子可以用firewall-cmd來改寫,如下所示。
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc YE,ZM -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
結束語
我在本教程中介紹了iptables/xt_geoip,這是一種簡單方法,可以根據來源/目的地國家,對網路數據包進行過濾。如果需要的話,可以將這件有用的武器部署到你的防火牆系統中。最後提醒一句,我應該提到:基於GeoIP的流量過濾並不是在你伺服器上阻止某些國家的萬無一失的方法。GeoIP資料庫天生就不準確/不完整,如果使用VPN、Tor或任何受到危及的中繼主機,就很容易欺騙來源/目的地國家。基於地域的過濾甚至會阻止本不該被禁止的合法流量。明白這個局限性後,再決定將它部署到你的生產環境中也不遲。
❼ 求geoip的C語言和PHP所有庫函數。
1、首先標准只是規定了這些函數的介面和具體的運行效率的要求,這些函數具體是怎麼寫得要看各個編譯器的實現和平台。
2、例如使用的編譯器是visual studio,微軟提供了一部分C運行時(CRT)的源碼,裡面會有memcpy,strcpy之類的函數的實現,在visual studio 2005下的路徑是C:\Program Files\Microsoft Visual Studio 8\VC\crt\src。