X3 photo gallery是一款简单,漂亮,功能强大的相册程序,不用数据库,直接读取文件夹内容。有免费版和专业版区分,相比$75的个人版和$150的专业版,免费版只是少了全景功能和底部有不可更改的版权信息,除此之外没有太大差距。
有意思的是免费一旦自行修改版权信息,网页就会弹窗提示未授权并跳转官网,在查看代码过程发现当中引用了几个伪装的授权代码,即使除去了没能真正除去版权信息,本文主要是为了探讨学习与研究记录一下学习过程。有需要请支持正版,其实免费版足以解决大部分需求。
DEMO:https://shanliang.xyz/
![图片[1]-X3 photo gallery简单的相册程序,伪授权方法-李峰博客](https://img.lifeng888.cn/2021/05/20210516140653352.png)
-------------------------------------------------------------------------------
- 安装
前面最新版是3.30.1,官网下载链接:https://www.photo.gallery/downloads/
安装环境:PHP 5.3 或更高,需要PHP扩展 GD 和 Mcrypt 。
安装过程接不多说了,参考官方详细文档
需要注意的的伪静态设置是,如果原来配置文档有涉及js,css的设置建议先删除。(例如宝塔需要删除原来配置文档里面location ~js jpg...那部分)
nginx伪静态
location / { if (!-e $request_filename){ # Rewrite any calls to html|json|xml|atom|rss if a folder matching * exists rewrite (.+)\.(html|json|xml|atom|rss)$ $1/ last; # Rewrite any calls to /render to the X3 image resizer rewrite ^/render/. /app/parsers/slir/ last; # Rewrite routes to X3 application index.php if they are non-existent files/dirs rewrite ^(.*)$ /index.php?$1 last; } } # Prevent web access to X3 /config and /_cache directories location ~ /(config|_cache) { deny all; }
-------------------------------------------------------------------------------
- 伪授权
以这个版本为例,目标:把验证网址https://auth.photo.gallery/改成 /auth
在/auth放入自己的授权文件
1)前台 修改 /app/public/js/3.30.1/x3.min.js
搜索 aHR0cHM6Ly9hdXRoLg== 替换为 Lw==
搜索 cGhvdG8uZ2FsbGVyeQ== 替换为 YXV0aA==
代码为base64加密,解密后对应
aHR0cHM6Ly9hdXRoLg== →→→ https://auth cGhvdG8uZ2FsbGVyeQ== →→→ photo.gallery Lw== →→→ / YXV0aA== →→→ auth
2)后台 修改 /panel/filemanager_js/x3_panel.js
搜索 aHR0cHM6Ly9hdXRoLnBob3RvLmdhbGxlcnkv 替换为 L2F1dGgv
代码为base64加密,解密后对应
aHR0cHM6Ly9hdXRoLnBob3RvLmdhbGxlcnkv →→→ https://auth.photo.gallery/ L2F1dGgv →→→ /auth/
3)修改使用本地x3.min.js,方法有二
一是修改引用文件:
修改/app/templates/cc/29/202264ab201d0d43a63882c31b1c06ae7e7992a5c371c52f885633d0acfa.php
大概第71行
$context["core_js"] = (("https://cdn.jsdelivr.net/npm/x3.photo.gallery@" . $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "x3_version")) . "/js/x3.min.js"); 修改为: $context["core_js"] = ("/app/public/js/3.30.1/x3.min.js");
二是后台设置取消cdn,全部使用本地静态:
在后台设置->高级-CDN,取消勾选。
4)新建 验证文件/auth/index.php
简单模式:
<?php header('Access-Control-Allow-Origin: *'); header('content-type:application/json'); echo '{"status":200,"message":"License is valid.","parameters":{"type":"1"}}'; ?>
或者指定域名模式
<?删除php header('Access-Control-Allow-Origin: *'); header('content-type:application/json'); $allowed_hosts = array('shanliang.xyz', 'p2.btu.pp.ua'); //修改为自己域名 if (in_array($_SERVER['SERVER_NAME'], $allowed_hosts)) { echo '{"status":200,"message":"License is valid [btu.pp.ua]","parameters":{"type":"1"}}'; }else{ echo '{"status":301,"message":"License not Found"}'; } ?>
这样应该可以了。
好像POST授权网址后,只要status返回的代码不是301,它就不会判断是不是正版,不再进行下一步的弹窗和跳转了
-------------------------------------------------------------------------------
目前个人使用遇到最大问题
文件夹不支持 #$%^&*()+=[]'"/\|{}`~!@.
Other disallowed characters
Other characters that are not allowed in folder names include #$%^&*()+=[]'"/\|{}`~!@. Most of these characters are simply not allowed in URL's, while some characters are disallowed because they break the functionality of X3.
梦屿 1个月前0
感谢博主分享愛國
3个月前0
禁止濫用免費資源jkk533 5个月前0
66666摄影投稿
6个月前0
这个功能不错,我看看我是哪里小天 8个月前0
感谢分享小天 8个月前0
感谢分享