由于涉及到多重缓存,所以技术性偏强,没有一定技术基础的外贸人就不要过多研究了。

关于缓存,本文已经尽量详细解释了,如果不成功,我也不想过多去解答。

实际上,为了实现这个功能,给自己访问网站也会带来一些不便。所以再次提醒一下,如果不是有着强烈的需求,建议别折腾。

特点:IP屏蔽+浏览器语言识别+Cookie访问权限

你会选择禁止他们访问吗?这是一个让人心烦的问题。

实际上,除了这些考虑因素之外,还有竞争性方面的考虑。

我的外贸课程有一定比例的学员是外贸SOHO和外贸刚起步的startup公司,刚刚开始学习并尝试自建站,总是会时不时问到:如何能屏蔽国内同行对其网站的访问?屏蔽国内同行,目的很简单,只是为了信息保护,防止同行的跟风copy。

Brian也曾担心过是否会有同行有意或者无意中看到他们的英文网站,所以一度想过,是否要做一些访客流量的限制。但是由于他对网站技术一窍不通,缺乏必要的基础,最后也不知道如何去弄,最终也忽视了,没有做任何的防范措施。

谁知道,才过了一个多月后,有其他同行模仿做了类似的款式,并且放到阿里巴巴上橱窗产品里去了!

这位Brian学员非常怀疑是该同行访问了他们的英文网站,抄袭了他们的设计和功能。而他还没来得及去申请专利,所以觉得特别头疼和心塞!!

最后,他来问我,是否有办法能屏蔽国内同行访问?

关于自己设计和研发的新款,被同行copy的这件事,真正的原因是否真的如他所说,因为被同行看了网站而导致的,还是另有其它什么原因,我不得而知。毕竟商场如战场,什么事都可能发生。

但也只是说说思路,并没有去尝试如何实现。而这位学员的事情发生后,我花了几个小时写代码和测试,最终发现可以实现!

通常屏蔽特定国家流量访问,我们常见的一些WP插件工具,方法主要是第一种:根据IP地址地理位置IP(GEOIP)进行国家地区地判断,进行对应地屏蔽。显然,这种方式效果不太好。而另一种方式,识别判断访问者的浏览器内置的语言编码,或者操作系统的语言,就可以差不多解决套个代理换个国外IP就可以访问的问题了。

这两种屏蔽访问的方式,即使是第一种方式(GEOIP),WordPress插件里也很多都是付费版插件里才提供这个功能。而第二种按浏览器语言或操作系统语言的方式,WordPress还没有任何相应的插件。

当然,像我这种有一定基础的业余Coder来说,不那么喜欢用插件,还是喜欢直接上代码。无论哪一种方式,要用代码实现,都不是太难。但对外贸人来说,要实现还是需要一点点基础和大胆尝试的,起码你得装个文(代)本(码)编辑器吧?记事本之类的还是算了!(常见的文本编辑器,还是推荐notepad++或sublimetext3)

废话不多说,在你的网站当前所用主题的文件夹下,找到header.php,使用文本编辑器打开。在之前加上下面的代码,保存,上传覆盖原header.php文件。

假设你要屏蔽国内同行的IP访问(同样地,你自己也只能代理方式访问了)。首先你必须有个判断GEOIP的模块。在VPS上你可以在nginx上安装geoip模块,但是安装和使用上还是麻烦了点。并且,如果你用的是虚拟主机,那就无法自己随心所欲安装扩展模块了。

所以,我们可以借用第三方IP库的API接口。比如淘宝的IP库,IP138的IP库等等,判断都非常准确。具体代码:

另外,为了防止国外调用ip.taobao.com的判断国家地区的getIpInfo.php文件速度慢,最好在上面代码下面再加一行dns预解析代码,加快载入文件。

如果你是SiteGround虚拟主机的用户,你需要在WP后台点击一下顶部的PurgeSGCache按钮来清理缓存。前提是,你之前在Cpanel里WordPressTools下–SuperCacher里面,开启了LEVEL1,LEVEL2和LEVEL3的缓存功能(开启之后,控制是用SGOptimizer控制)。

如果你安装过任何缓存类的插件,也注意清理一下缓存。因为你的首页会被你的主机缓存,甚至有些缓存插件会利用浏览器缓存。

关于方式二,我认为根据浏览者的浏览器语言编码来判断已经足够,所以这里不必再去研究判断访客的操作系统语言的方法了。

每个浏览器都会有个语言编码,如中文最常见的是zh或zh-CN。

利用访问者的浏览器语言类型进行判断并屏蔽:

所以如果你要排除这些情况,可以再做一个if判断。稍作修改:

注意:如果你使用Avada,Betheme等主题,请放到的上面。

以上两种方式在chrome,firefox以及sougou浏览器测试下,一切正常。

1)可不可以两种方式结合起来?ofcourse,whynot!代码都扔到之前即可,不过这样的话你可能用了代理也访问不了自己的网站了,呵呵。那怎么办呢?下文会介绍方法。

2)上面的两种方式,把屏蔽的访问转向百度了,这多少有点刻意跳转的意思,容易引人怀疑。

3)这种分流方式也可以用在marketing上,把不同地区流量的潜在客户,导到不同的landingpage上。或者你玩多站点,你也可以设置导流。

站长在访问网站前,先访问一个任何人都不知道的页面,获取浏览器特定的cookie,相当于获取通行证。

4.1)在网站根目录下(如果是虚拟主机,则网站根目录大多是在public_html目录下;如果是VPS则大多是在/home/wwwroot/www.abc.com/下),放一个php文件。

取名getcookie.php,或letmein.php,或任何你觉得好记的名字。为了安全起见,你最好自己取个名字,不要用我示范的文件名。

代码如下:(请自行修改网站网址,把域名换成你的)

下载完js.cookie.js文件,上传到你的网站根目录下。跟getcookie.php一个目录下。

当然你还可以再检查一下:F12调出审查元素工具窗口,点击最上面一行里的Application。然后点击下方左侧的Cookie,如果看到有一行名为WebsiteOwner的Cookie记录,则说明赋予Cookie成功。

此时再访问自己的网站,即可正常访问。

2)在主题文件夹下,header.php文件的前放下面的代码

(注意:如果你使用Avada,Betheme等主题,如果放上面不行,放到上面即可)

一般同行来访问,没有正确的cookie值,是进不去的。而你要进去,先访问你网站根目录下的getcookie.php或letmein.php文件即可。

这就解决了方式二的浏览器语言编码通杀的问题。

思维导图来小结吧:

有人会说了,怎么结合起来用呢?

先从②和③开始检查:

1)你WP后台有没有安装任何缓存类的插件?有:清理缓存(flushcache/purgecache)。没有:无需任何操作。建议清理完缓存后,先停用缓存插件。因为你要反复调试屏蔽代码。等确定添加的功能代码运行正常后,再重新启用缓存插件。

2)你没有清理本地电脑上浏览器的缓存?为了提高网页访问速度,有些缓存插件会使用浏览器缓存。原理是:第一次访问网页时就在本地浏览器缓存中生成该网站的页面,让你从第二次访问开始,之后的每次访问直接从你浏览器缓存里获取,而不是去网站获取最新的页面。所以你需要把你Chrome浏览器的缓存也手动清理一下,Chrome浏览器右上角菜单按钮-更多工具-清理浏览数据,选择“缓存的图片和文件”。如果你想清除cookie,也一并勾上,点击清除数据按钮。

上面这两类缓存都容易清理。第一类虚拟主机自带的缓存,要稍微复杂一点点。

3)你的虚拟主机是否自动开启了自带的缓存?常见的外贸人用的虚拟主机是SiteGround或Bluehost。前者有个SuperCacher缓存系统,后者有个EnduranceCache系统。

***如果用的是SiteGround虚拟主机,SiteGround应该在网站后台自带安装了管理SuperCacher的WordPress插件:SGOptimizer。点击进去,出现配置界面。在SuperCacherSettings下,DynamicCaching下面有个ManualCachePurge(手动清理缓存),点击清理一下。

然后第二项:EnvironmentOptimization之下,先不要开启BrowserCaching,GZIPCompression可以开启。其他的不用管。第三个选项卡下,注意其它都可以勾选,MinifyJavaScriptFiles这一项不要勾选,JS文件代码的压缩,容易出问题。

然后点击顶部的PurgeSGCache。这样即可清理掉所有SiteGround生成的缓存。

***如果你用的是Bluehost虚拟主机,先在WP后台EndurancePageCache这里,清理一下PageCache。点击PurgeCache清理缓存的按钮

清理完了PageCache,你再看上面那里BrowserCache那里,它没有任何清理按钮,是因为这种缓存插件让你的浏览器第一次访问的时候也在浏览器里生成了缓存。所以你需要清理浏览器中的缓存。

然后,在WP后台,Setting里面,会有个EnduranceCache-CacheLevel的选项,选择Off。

然后在Bluehost后台,Performace这里,勾选CachingOff,这样就顺利关闭了Bluehost自带的缓存。

打开Chrome浏览器的设置,点击菜单–设置(Settings)–高级–语言,然后把英语移到顶部。

通过这种办法,可以修改浏览器语言,进而影响HTTP_ACCEPT_LANGUAGE的判断。

THE END
1.“没关系”的英文比如,当朋友帮你搬家具,你可能会说:“Thank you so much!”而他回应:“That's all right.”这种表达既礼貌又简洁。除了That's all right,还有一些同义表达可以使用。比如,“You're welcome”也是常用的表达方式,用来回答别人的感谢。比如,有人帮你解答了一个难题,你可以说:“Thank you https://zhidao.baidu.com/question/1959152293558550228.html
2.我没有权限的英文我没有权限翻译我没有权限英语怎么说海词词典,最权威的学习词典,专业出版我没有权限的英文,我没有权限翻译,我没有权限英语怎么说等详细讲解。海词词典:学习变容易,记忆很深刻。http://dict.cn/%E6%88%91%E6%B2%A1%E6%9C%89%E6%9D%83%E9%99%90
3.我没有权限的翻译是:Idonothavepermission中文翻译英文意思a这些产品是来自卡夫公司的 These products are come from the Cuff company[translate] a動機付け(国内セミナーの開催)及び企業のピックアップ 动机附有(开头国内研讨会)和企业搭便车[translate] a我没有权限 I do not have the jurisdiction[translate]http://eyu.zaixian-fanyi.com/fan_yi_9272575
4.如何在没有系统管理员权限的电脑上安装输入法我单位用的是英文版的X在输入法中可以设置各种语言,添加好多输入法,应该可以满足需要。右击输入法-设置-选择语言-添加或删除-https://iask.sina.com.cn/b/1735485.html
5.git提示permissiondenied问题的解决方法有什么?? 在使用github进行项目克隆的时候,有些时候会出现“git@github.com: Permission denied (publickey)https://www.zhihu.com/question/483980934/answer/54634893047
6.Deskreen我该怎么办? 这个应用程序中没有这个选项。辅助屏幕查看的方式与屏幕镜像相同。当您将虚拟显示适配器插入计算机时,它将创建一个虚拟显示。然后在第二步 (扫描二维码之后),在插入虚拟显示适配器后,您可以选择 “整个屏幕” 选项来共享和选择与其他显示一起出现的新虚拟显示。如果选择要共享的虚拟显示器,Deskreen 将https://deskreen.com/
7.手动打造Snort+barnyard2+BASE可视化报警平台注意:程序在启动过程中会弹出很多信息,当出现“Waiting for new spool file”字样表示该命令启动成功,如没有,则从该环节的步骤1开始检查。 四、访问权限设置 如果在一个简单的模拟环境下实验,该步骤可忽略。 假设场景,我只希望某一个IP能访问Snort服务器上的22、80端口,我们在Snort主机上做如下设置。 https://blog.51cto.com/chenguang/2433563
8.是否可以对定义数据类型为“整数类型”的列添加英文字母?为什当我们并没有使用任意一个数据库时,输入命令select database();会发现当前正在使用的数据库为NULL,表示没有使用任意一个数据库。 在创建数据表时,准确的定义字段的数据类型是非常重要的。 MySQL支持多种数据类型,但大致可以分为3类:数值、日期/时间和字符串(字符)类型。 https://blog.csdn.net/weixin_45949073/article/details/108457965
9.Hackintool(原IntelFB如果没有音频依然存在问题,请返回步骤4并尝试不同的 Layout ID 注意:如果您尝试所有 Layout ID 但仍有问题,请尝试设置 补丁 ? 高级 ? 仿冒声卡 ID 选项。 如果这依然不起作用,那么尝试安装FakePCIID.kext+FakePCIID_Intel_HDMI_Audio.kext 显示器 EDID 修补 https://blog.daliansky.net/Intel-FB-Patcher-tutorial-and-insertion-pose.html
10.常见问题微鲤万年历官网答:由于现在第三方平台没有完全对开发者开放,没有权限实现这个功能。暂时还无法满足这个需求。 5、黄历不见了是怎么回事? 答:SD卡挂载异常,可以把SD卡重新安装一下,重启手机。 6、怎么老是出现广告在通知栏? 答:微鲤万年历官方发布的安装包绝对不会有广告出现在通知栏,倘若若出现,则可能是被反编译过,建议卸载https://www.zhwnl.cn/s_html/faq.html?webaddress=0x157781390
11.常见问题若贵单位已购买了相应的文献库,但系统仍提示“您没有权限使用该数据库”,请联系本系统的“在线咨询”,或者发电子邮件到本系统 技术支持support@scholarmate.com。3. 检索时,为何系统提示“您所选数据库正在维护中”?当文献库正处维护中时,即出现以下提示信息,请稍候再试。https://www.scholarmate.com/resscmwebsns/html/search_faq.htm
12.命令时遇到错误消息:“访问被拒绝,因为您没有足够的权限,或者更正此问题和 CMD(命令提示符)中 chkdsk 执行要求的步骤。 说明 在磁盘部件管理中收缩卷时发生硬盘驱动器错误。然后,系统请求用户在 CMD(命令提示符)中执行chkdsk。 解决方法 此问题是由于尝试在没有管理员权限的情况下在命令提示符下运行chkdsk引起的。 https://www.intel.cn/content/www/cn/zh/support/articles/000058056/intel-nuc.html
13.万能五笔21、修正了在IE中输入当有编码未上屏时按CTRL+空格切换到英文状态下时,删除键失效的BUG 22、解决了在部分游戏中,输入法窗口闪烁的问题。 23、解决了在VISTA下与IE7保护模式不兼容的问题。 24、解决了因为权限问题,导致“无法获取万能五笔安装目录”的错误。 ·万能五笔7.45外挂版更新内容:1、去除了可能出现关键功https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=554853
14.我还没有工作,参加2021护士考试报名的话工作情况怎么填?我还没有工作,参加2021护士考试报名的话工作情况怎么填?关于这一问题有很多护士考生关注,医学教育网小编专门解答如下: 如实填写即可,没有参加工作的考生,工作情况直接选择“否”即可。 如果在岗请选择“是”,并如实填写“单位名称”(名称中不能存在空格、特殊符号)、“单位所属”、“从事本专业年限”(英文状态下的https://www.med66.com/hushi/baoming/li2101157670.shtml
15.OS+linuxcommand/LinuxCommand/Linuxcommand/linuxany_command > /dev/sda使用该命令,原始数据将被写到块设备,其结果是造成数据丢失。 wget http://some_untrusted_source -O- | sh不要从不信任的地方下载东西,这可能会获取恶意代码。 mv /home/yourhomedirectory/* /dev/null此命令将移动主目录中的所有文件到一个不存在的地方,你将再也看不到那些文件。 https://www.iteye.com/blog/223297