如果你見過中文域名應該會覺得很奇怪,為什么復制出來的域名變成一個很莫名其妙的字符串,比如這個秀恩愛的域名“郝越.我愛你”,實際顯示的域名是 http://xn--vq3al9d.xn--6qq986b3xl/ 這就叫 Punycode 具體查看 https://www.punycoder.com/
Punycode 是一個根據 RFC 3492 標準而制定的編碼系統,主要用于把域名從地方語言所采用的 Unicode 編碼轉換成為可用於 DNS 系統的編碼。郝越.我愛你域名不是常規的字符,所以域名機構規定把他 轉碼成了 http://xn--vq3al9d.xn--6qq986b3xl/ 類似的還有 āáǎà.com 轉碼成了 xn--0cab9g30b.com/
在百度搜索“中文域名轉碼”,進入在線編碼的網站,提交中文域名,即可將中文域名轉為 punycode 或者是 GBK 編碼。在 nginx 配置文件中使用:
?
//參考https://blog.zhengxianjun.com/2015/05/chinese-domain-and-nginx-conf/
server {
listen 80;
server_name xn--vq3al9d.xn--6qq986b3xl;
index index.php;
root /alidata/www/love;
}
?
在 PHP 中可以使用如下方法轉換
?
#sudo apt-get install php5-intl
$xn_idn = idn_to_ascii('郝越.我愛你');
echo $xn_idn; // xn--vq3al9d.xn--6qq986b3xl
$idn = idn_to_utf8($xn_idn);
echo $idn; // 郝越.我愛你
?
如果不用擴展,可以使用 true/punycode 包 https://github.com/true/php-punycode 安裝 composer require true/punycode:~2.0
?
// Import Punycode
use TrueBV\Punycode;
$Punycode = new Punycode();
var_dump($Punycode->encode('renangon?alves.com'));
// outputs: xn--renangonalves-pgb.com
var_dump($Punycode->decode('xn--renangonalves-pgb.com'));
// outputs: renangon?alves.com
?
然后推薦一個阿里出品的 AnyProxy ,它是一個開放式的HTTP代理服務器,平常除了 fiddler 抓包,這個也很方便。
使用方法如下:
?
node.js通過npm install -g anyproxy 安裝AnyProxy 啟用https代理
$ anyproxy -i --rule=wxdumpchange_score/wxdump.js
[AnyProxy Log][2018-02-27 11:12:46]: Http proxy started on port 8001
[AnyProxy Log][2018-02-27 11:12:46]: web interface started on port 8002
?
移動端通過wifi代理啟用anyproxy的服務器的ip,端口默認為8001
移動端要安裝證書才能使用,不然無法攔截https請求 然后移動端通過瀏覽器進入 ip:8002 點擊下載crt證書 進行安裝
ios要在設置 通用 關于本機 最下面的證書信任里面吧anyproxy打開
?
最后測試下 curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 瀏覽器訪問http://127.0.0.1:8002 ,界面上能看到剛才的請求信息