گاهی اوقات بنا به دلایل مختلفی نظیر عدم تمایل به ارائه محتوا به کاربران برخی کشورهای خاص، یا جلوگیری از دسترسی رنج آی پی هایی خاص به سایت، مجبوریم خدمات وب سایت خودمان را تنها به برخی از آی پی ها و کشورها اختصاص دهیم. برخی از سایت هایی که محتوای آنها صرفا در داخل ایران کاربرد دارند و دسترسی سایر کشورها به محتوای سایت ما، کاری بیهوده است و مضراتی ممکن است در پی داشته باشد، بهتر است آن ها را تحریم کنیم.
برای تحریم کردن کشور خاص، چندین راه و روش وجود دارد که تمامی آنها در نهایت یک کار را انجام خواهند داد. در ادامه با انجمن بی تاک همراه باشید تا راه های انجام این کار را به شما آموزش دهیم.

در سیستم مدیریت محتوای وردپرس
اگر از وردپرس استفاده می کنید، افزونه های زیادی برای اینکار هستند. افزونه های فایروال یا افزونه های مخصوص IP Blocking که می توانند این کار را برایتان انجام دهند. این افزونه ها عبارتند از:
افزونه IP Geo Block
https://wordpress.org/plugins/ip-geo-block/
این افزونه عملکردی مشابه یک ابزار امنیتی و فایروال کامل را دارد. هرچند مدت زمان زیادی است که بروز رسانی نشده اما اگر کدنویس باشید می توانید بخش فایروال را از آن استخراج کرده و استفاده کنید.
افزونه BBQ Firewall
https://wordpress.org/plugins/block-bad-queries/
این افزونه نیز امکانات یک فایروال کامل و قوی را به شما می دهد که می توانید از آن برای ایمن کردن وب سایت خود و محافظت از سایتتان در برابر اسپمرها و هکرها استفاده کنید.
افزونه RSFirewall (پیشنهاد بی تاک)
https://wordpress.org/plugins/rsfirewall/
این افزونه یک فایروال بسیار قوی و با امکانات متنوع است. شما می توانید از آن برای موارد گوناگونی استفاده کنید. امکانات تحریم کشورها و یا رنج آی پی خاص دقیقا همین هدفی که در این تاپیک داریم را برایتان انجام می دهند.
افزونه IP Location Block
https://wordpress.org/plugins/ip-location-block/
این افزونه نیز کارهای بلاک کردن آی پی ها را برایتان انجام خواهد داد.
استفاده از کتابخانه GeoIP سرور
فایل .htaccess
که در روت یک سایت بعنوان مثال public_html
فایل منیجر قرار دارد، مغز فرماندهی یک سایت به شما می رود. محتویات و دستورات داخل این فایل می تواند روی تمامی بخش های سایت اجرا شود و کنترل زیادی خواهد داشت. برای مسدود کردن یا تحریم یک کشور یا آی پی خاص، این فایل شاید بهترین روش برای انجام اینکار باشد. حتی ابزارها و افزونه های مخصوص اینکار، در نهایت کدهای اجرایی را داخل این فایل قرار می دهند. این فایل در فایل منیجر یک سایت، هر جایی که قرار داشته باشد، دستورات داخلش روی تمامی فایل ها و پوشه های همان مسیر و زیرپوشه ها و تمامی فایل های آن پوشه اجرا خواهند شد.
این روش نیازمند فعال بودن GeoIP روی هاست شماست. اگر از فعال بودن آن مطمئن نیستید، به هاستینگ خود تیکت بزنید.
کد و نام کشورها:
در ابتدا باید کدهای مخصوص کشورهای مختلف را داشته باشید. کدهای کشورها در لیست زیر وجود دارد:
AT,"Austria"
LU,"Luxembourg"
A1,"Anonymous Proxy"
RS,"Serbia"
MH,"Marshall Islands"
LI,"Liechtenstein"
WF,"Wallis and Futuna"
QA,"Qatar"
AW,"Aruba"
SZ,"Swaziland"
GH,"Ghana"
PA,"Panama"
GT,"Guatemala"
NU,"Niue"
LC,"Saint Lucia"
AX,"Aland Islands"
TF,"French Southern Territories"
AD,"Andorra"
CI,"Cote d'Ivoire"
AM,"Armenia"
MC,"Monaco"
NZ,"New Zealand"
SK,"Slovakia"
PE,"Peru"
BA,"Bosnia and Herzegovina"
DJ,"Djibouti"
SG,"Singapore"
JM,"Jamaica"
LA,"Lao People's Democratic Republic"
BN,"Brunei Darussalam"
GR,"Greece"
MA,"Morocco"
GQ,"Equatorial Guinea"
TN,"Tunisia"
ES,"Spain"
ZW,"Zimbabwe"
PW,"Palau"
LV,"Latvia"
CC,"Cocos (Keeling) Islands"
RO,"Romania"
GB,"United Kingdom"
KI,"Kiribati"
MG,"Madagascar"
MQ,"Martinique"
IS,"Iceland"
GP,"Guadeloupe"
CL,"Chile"
CG,"Congo"
KZ,"Kazakhstan"
IN,"India"
DM,"Dominica"
NO,"Norway"
BJ,"Benin"
MU,"Mauritius"
TH,"Thailand"
BF,"Burkina Faso"
BM,"Bermuda"
FI,"Finland"
CM,"Cameroon"
DO,"Dominican Republic"
SC,"Seychelles"
KY,"Cayman Islands"
AO,"Angola"
NG,"Nigeria"
LS,"Lesotho"
HK,"Hong Kong"
NF,"Norfolk Island"
NA,"Namibia"
CK,"Cook Islands"
US,"United States"
HU,"Hungary"
NP,"Nepal"
GU,"Guam"
IO,"British Indian Ocean Territory"
BZ,"Belize"
LY,"Libyan Arab Jamahiriya"
MK,"Macedonia"
PN,"Pitcairn"
EG,"Egypt"
UM,"United States Minor Outlying Islands"
CR,"Costa Rica"
KE,"Kenya"
TK,"Tokelau"
BV,"Bouvet Island"
CA,"Canada"
GG,"Guernsey"
ER,"Eritrea"
IM,"Isle of Man"
BE,"Belgium"
BB,"Barbados"
AQ,"Antarctica"
IQ,"Iraq"
GW,"Guinea-Bissau"
PR,"Puerto Rico"
EE,"Estonia"
PG,"Papua New Guinea"
ET,"Ethiopia"
GI,"Gibraltar"
PL,"Poland"
PF,"French Polynesia"
TT,"Trinidad and Tobago"
LB,"Lebanon"
FR,"France"
O1,"Other Country"
SB,"Solomon Islands"
HT,"Haiti"
IR,"Iran, Islamic Republic of"
A2,"Satellite Provider"
BG,"Bulgaria"
IL,"Israel"
SI,"Slovenia"
SO,"Somalia"
KG,"Kyrgyzstan"
ZA,"South Africa"
SR,"Suriname"
MY,"Malaysia"
AE,"United Arab Emirates"
LR,"Liberia"
CW,"Curacao"
FJ,"Fiji"
TR,"Turkey"
AL,"Albania"
TW,"Taiwan"
KW,"Kuwait"
PH,"Philippines"
BD,"Bangladesh"
MP,"Northern Mariana Islands"
AS,"American Samoa"
PM,"Saint Pierre and Miquelon"
TM,"Turkmenistan"
SS,"South Sudan"
BT,"Bhutan"
BH,"Bahrain"
CD,"Congo, The Democratic Republic of the"
KN,"Saint Kitts and Nevis"
GL,"Greenland"
DE,"Germany"
NE,"Niger"
SY,"Syrian Arab Republic"
JE,"Jersey"
CF,"Central African Republic"
BS,"Bahamas"
JP,"Japan"
AR,"Argentina"
CV,"Cape Verde"
BI,"Burundi"
DK,"Denmark"
TZ,"Tanzania, United Republic of"
TV,"Tuvalu"
MO,"Macao"
CZ,"Czech Republic"
EH,"Western Sahara"
NI,"Nicaragua"
EC,"Ecuador"
CY,"Cyprus"
AF,"Afghanistan"
MX,"Mexico"
SV,"El Salvador"
CO,"Colombia"
WS,"Samoa"
GS,"South Georgia and the South Sandwich Islands"
KM,"Comoros"
MN,"Mongolia"
BR,"Brazil"
GE,"Georgia"
KP,"Korea, Democratic People's Republic of"
NL,"Netherlands"
TJ,"Tajikistan"
SL,"Sierra Leone"
HM,"Heard Island and McDonald Islands"
SJ,"Svalbard and Jan Mayen"
SM,"San Marino"
VA,"Holy See (Vatican City State)"
VI,"Virgin Islands, U.S."
VE,"Venezuela"
MR,"Mauritania"
FM,"Micronesia, Federated States of"
HN,"Honduras"
SH,"Saint Helena"
ME,"Montenegro"
SD,"Sudan"
MT,"Malta"
MM,"Myanmar"
BY,"Belarus"
GA,"Gabon"
NC,"New Caledonia"
LT,"Lithuania"
LK,"Sri Lanka"
MW,"Malawi"
DZ,"Algeria"
TL,"Timor-Leste"
FO,"Faroe Islands"
SX,"Sint Maarten"
GD,"Grenada"
BQ,"Bonaire, Saint Eustatius and Saba"
UG,"Uganda"
RE,"Reunion"
BO,"Bolivia"
MV,"Maldives"
VC,"Saint Vincent and the Grenadines"
ID,"Indonesia"
GM,"Gambia"
RW,"Rwanda"
KR,"Korea, Republic of"
CH,"Switzerland"
AU,"Australia"
ZM,"Zambia"
EU,"Europe"
MS,"Montserrat"
GN,"Guinea"
IE,"Ireland"
UA,"Ukraine"
ST,"Sao Tome and Principe"
VG,"Virgin Islands, British"
SN,"Senegal"
MF,"Saint Martin"
OM,"Oman"
HR,"Croatia"
GY,"Guyana"
BL,"Saint Barthelemy"
GF,"French Guiana"
TO,"Tonga"
KH,"Cambodia"
TD,"Chad"
SA,"Saudi Arabia"
CN,"China"
MZ,"Mozambique"
UZ,"Uzbekistan"
CX,"Christmas Island"
NR,"Nauru"
AG,"Antigua and Barbuda"
UY,"Uruguay"
SE,"Sweden"
TG,"Togo"
ML,"Mali"
YE,"Yemen"
VN,"Vietnam"
AP,"Asia/Pacific Region"
RU,"Russian Federation"
PY,"Paraguay"
JO,"Jordan"
FK,"Falkland Islands (Malvinas)"
YT,"Mayotte"
BW,"Botswana"
MD,"Moldova, Republic of"
PT,"Portugal"
PK,"Pakistan"
TC,"Turks and Caicos Islands"
CU,"Cuba"
AI,"Anguilla"
AZ,"Azerbaijan"
VU,"Vanuatu"
IT,"Italy"
PS,"Palestinian Territory"
برای یافتن راحت تر کد و یا نام کشور، کلید ترکیبی Ctrl + F را در همین صفحه بزنید و بخشی از نام کشور موردنظر را جستجو کنید تا خط مربوط به آن کشور در لیست بالا را پیدا کنید.
در لیست بالا، دو حرف ابتدای هر خط بطور مثال IR کد کشور است که ما برای دستورات htaccess
دقیقا به همین کد احتیاج داریم. کدهای موردنظرتان را پیدا کنید و ادامه تاپیک را مطالعه کنید.
برای مسدود کردن یک یا چند کشور خاص:
اگر قصد دارید یک یا چند کشور خاص را از دسترسی به سایت مسدود کنید، و مابقی کشورها به سایت دسترسی داشته باشند، کافیست کد زیر را در ابتدای فایل .htaccess
سایتتان قرار دهید:
GeoIPEnable On
# Put countries to deny here
SetEnvIf GEOIP_COUNTRY_CODE TH DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE CN DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE IN DenyCountry
Allow from all
Deny from env=DenyCountry
در لیست بالا، بجای کدهای TH و CN و IN که ما در اینجا تنها بعنوان نمونه وارد کرده ایم، کد کشورهای دلخواهتان را اضافه کنید. اگر کشورهای بیشتری می خواهید اضافه کنید، یک خط SetEnvIf GEOIP_COUNTRY_CODE IN DenyCountry
را کپی کنید و کد کشور را در آن تغییر دهید.
مسدود کردن همه کشورها اما اجازه به کشورهای خاص:
در حالت قبلی، تمامی کشورها مجاز بودند و چند کشور تحریم می شدند، اما اگر قصد دارید تمامی کشورها را تحریم کنید و تنها دسترسی به سایت را به یک یا چند کشور خاص محدود کنید، از این روش استفاده کنید. مشابه روش قبل، کد زیر را در ابتدای فایل .htaccess
قرار دهید:
GeoIPEnable On
# Put countries to allow here
SetEnvIf GEOIP_COUNTRY_CODE IR AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE UK AllowCountry
Deny from all
Allow from env=AllowCountry
در کد بالا ما تعیین کرده ایم که تنها کاربران کشور IR (ایران) و UK (بریتانیا) به سایت ما دسترسی داشته باشند، شما می توانید طبق لیست ابتدای تاپیک، این دستور را شخصی سازی کنید.
تحریم کردن رنج آی پی خاص (بدون نیاز به GeoIP)
در روش قبلی، نیازمند کتابخانه GeoIP روی سرور بود. در صورتی که هاست شما چنین قابلیتی ندارد، شما باید آی پی کشور موردنظرتان را به طور دستی در فایل .htaccess
وارد کنید تا فایروال سرور شما بتواند دستور را به درستی اجرا کند. برای انجام اینکار، ابزاری رایگان وجود دارد که می توانید از طریق لینک زیر به آن دسترسی پیدا کنید:
https://www.countryipblocks.net/acl.php

- بعد از وارد شدن به سایت، ابتدا در لیست Select by Continent or Country کشور/کشورها یا قاره موردنظرتان را انتخاب کنید.
- در لیست Select Format حالت نوشتن دستورات را انتخاب کنید. در تصویر بالا، داخل کادر مشخص شده این دو گزینه روی هاستینگ های مرسوم کاربرد دارند بنابراین از این دو گزینه استفاده کنید. اگر گزینه Apache .htaccess Deny را انتخاب کنید، کشور انتخاب شده مسدود خواهد شد، و اگر Apache .htaccess Allow را انتخاب کنید، کشور یا قاره ای که انتخاب کرده اید، به سایت دسترسی خواهد داشت.
- روی کلید Creat ACL کلیک کنید و منتظر باشید تا دستورات مربوط به
.htaccess
ظاهر شود.
- سپس کدهای ظاهر شده را کپی کنید و در ابتدای فایل
.htaccess
سایتتان قرار دهید.