• 如何实现Punycode中文域名转码


    如果你见过中文域名应该会觉得很奇怪,为什么复制出来的域名变成一个很莫名其妙的字符串,比如这个秀恩爱的域名“郝越.我爱你”,实际显示的域名是 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 TrueBVPunycode;

    $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 ,界面上能看到刚才的请求信息

  • 相关阅读:
    Windows 右键添加用记事本打开的选项
    shell 脚本常用写法
    常用命令--dig
    电子表格数字式的小时化成时分秒格式
    Kaggle猫狗图像分类竞赛Baseline
    阿里巴巴用户体验研究专员暑期实习生笔试 经验分享 2019
    sysctl -w net.core.somaxconn=65535
    src/stream/ngx_stream_proxy_module.c:542: 错误:‘ngx_stream_upstream_t’没有名为‘ssl_name’的成员
    ssl.cpp:333: error: ‘SSL_set_tlsext_host_name’ was not declared in this scope
    fiddler QuickExec
  • 原文地址:https://www.cnblogs.com/ymwang/p/8610534.html
Copyright © 2020-2023  润新知