{"id":827,"date":"2025-07-05T20:28:46","date_gmt":"2025-07-05T12:28:46","guid":{"rendered":"https:\/\/himpqblog.cn\/?p=827"},"modified":"2025-07-05T21:23:44","modified_gmt":"2025-07-05T13:23:44","slug":"%e6%9c%89%e9%81%93%e7%bf%bb%e8%af%91-%e9%80%86%e5%90%91api-%e5%88%86%e6%9e%90","status":"publish","type":"post","link":"https:\/\/himpqblog.cn\/index.php\/archives\/827","title":{"rendered":"\u6709\u9053\u7ffb\u8bd1 \u9006\u5411API \u5206\u6790"},"content":{"rendered":"\n<p>\u58f0\u660e\uff1a\u672c\u6587\u7ae0\u4ec5\u7528\u4e8e\u5b66\u4e60\u63a2\u8ba8\uff0c\u8bf7\u52ff\u7528\u4e8e\u4efb\u4f55\u8fdd\u53cd\u6cd5\u5f8b\u7684\u7528\u9014\uff0c\u5982\u6709\u4fb5\u6743\u8bf7\u8054\u7cfb\u4e0b\u67b6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6709\u9053web\u7ffb\u8bd1\u8bf7\u6c42\u6d41\u7a0b<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u901a\u8fc7<strong>app.js<\/strong>\u58f0\u660e\u4ea7\u54c1\u4ee3\u79f0<strong>keyid<\/strong>\u4e0e\u4ea7\u54c1\u56fa\u5b9a\u5bc6\u94a5<strong>constSign<\/strong><\/li>\n\n\n\n<li>\u5411<a href=\"https:\/\/dict.youdao.com\/webtranslate\/key\">https:\/\/dict.youdao.com\/webtranslate\/key<\/a>\u8bf7\u6c42\uff0c\u83b7\u53d6AES\u52a0\u5bc6\u7684\u5bc6\u94a5\u4fe1\u606f(<strong>aesKey<\/strong>, <strong>aesIv<\/strong>)\u4ee5\u53ca\u540e\u7eed\u8bf7\u6c42\u7684\u5bc6\u94a5(<strong>secretKey<\/strong>)<\/li>\n\n\n\n<li>\u5411<a href=\"https:\/\/dict.youdao.com\/webtranslate\">https:\/\/dict.youdao.com\/webtranslate<\/a>\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42<\/li>\n\n\n\n<li>\u901a\u8fc7AES\u89e3\u5bc6\u7ffb\u8bd1\u5185\u5bb9<\/li>\n<\/ul>\n\n\n\n<p>\u770b\u7740\u662f\u4e0d\u662f\u5f88\u7b80\u5355\uff0c\u4f46\u662f\u9006\u5411\u5206\u6790\u4f60\u7684\u5934\u4f1a\u53d8\u5927\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e00\u6b21\u8bf7\u6c42\u5206\u6790<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"627\" height=\"534\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image.png\" alt=\"\" class=\"wp-image-828\" style=\"width:406px;height:auto\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image.png 627w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-300x256.png 300w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/figure>\n\n\n\n<p>\u901a\u8fc7\u63a7\u5236\u53f0\u76d1\u542c\u7f51\u7edc\u53ef\u4ee5\u53d1\u73b0\uff0c\u6700\u91cd\u8981\u7684\u8bf7\u6c42\u53c2\u6570\u5c31\u662f<strong>keyid<\/strong>,<strong>sign<\/strong>,<strong>mysticTime<\/strong>\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6545\u6b64\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u9996\u5148\u5bf9keyid\u8fdb\u884c\u5206\u6790\u3002<\/h2>\n\n\n\n<p>keyid\u662f\u6709\u9053\u4ea7\u54c1\u7684\u4ee3\u79f0\uff0c\u5728app.js\u4e2d\u53ef\u4ee5\u53d1\u73b0\u8fd8\u6709ai\u7ffb\u8bd1\u7684\u4ea7\u54c1\u4ee3\u79f0\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"877\" height=\"374\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-1.png\" alt=\"\" class=\"wp-image-829\" style=\"width:485px;height:auto\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-1.png 877w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-1-300x128.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-1-768x328.png 768w\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" \/><\/figure>\n\n\n\n<p>\u800c\u6211\u4eec\u91cd\u8981\u7684\u662f\u83b7\u53d6\u6709\u9053\u7684\u666e\u901a\u6587\u672c\u7ffb\u8bd1\u9006\u5411API\uff0c\u6240\u4ee5\u91cd\u8981\u7684\u662f<strong>webfanyi-key-getter-2025<\/strong>\u4f1a\u4e0d\u4f1a\u53d8\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"262\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-2-1024x262.png\" alt=\"\" class=\"wp-image-830\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-2-1024x262.png 1024w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-2-300x77.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-2-768x196.png 768w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-2.png 1178w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u901a\u8fc7\u67e5\u9605\u53bb\u5e74\u5386\u53f2\u8bb0\u5f55\u53ef\u4ee5\u53d1\u73b0keyid\u662f\u4f1a\u53d8\u66f4\u7684\uff0c\u4eca\u5e74\u53ea\u662f\u5728\u540e\u9762\u52a0\u4e0a\u4e86\u201d-2025\u201c\uff0c\u540c\u65f6\u62ff\u5230\u4e86\u4e00\u4e2a\u6211\u79f0\u4e4b\u4e3a<strong>constSign<\/strong>\u7684\u5e38\u91cf\u5bc6\u94a5\uff0c\u6211\u4eec\u73b0\u5728\u8fd8\u4e0d\u77e5\u9053\u4ed6\u80fd\u5e72\u4ec0\u4e48\uff0c\u4f46\u662f\u5148\u7559\u4e0b\u6765\u3002<\/p>\n\n\n\n<p>\u6211\u4eec\u65e2\u7136\u5df2\u77e5\u6240\u6709\u7684\u4ea7\u54c1\u4ee3\u79f0\u90fd\u662f\u5199\u5728app.js\u4e2d\u7684\uff0c\u4e0d\u59a8\u5199\u4e00\u4e2apython\u811a\u672c\u76f4\u63a5\u6293\u53d6js\u4e2d\u7684\u5185\u5bb9\uff1a<\/p>\n\n\n\n<p>\u901a\u8fc7\u5339\u914dwebfanyi\u7684\u5185\u5bb9\uff0c\u76f4\u63a5\u67e5\u627e<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>def getProductKeys(key=\"webfanyi\", useTemp = False):\n    \"\"\"\u83b7\u53d6\u6709\u9053\u7ffb\u8bd1\u4ea7\u54c1ID\u4e0e\u4ea7\u54c1\u5bc6\u94a5\"\"\"\n    if useTemp:\n        return \"webfanyi-key-getter-2025\", \"yU5nT5dK3eZ1pI4j\"\n    \n    url           = \"https:\/\/shared.ydstatic.com\/dict\/translation-website\/0.6.6\/js\/app.78e9cb0d.js\"\n    data          = requests.get(url).text\n    keyid_pattern = r'async\\(\\{commit:e\\},t\\)\\=\\>\\{const\\s+a=\"'+key+'(&#91;^\"&#93;+)\",n=\"(&#91;^\"&#93;+)\"'\n    match         = re.search(keyid_pattern, data)\n    if match:\n        keyid      = key+match.group(1)\n        const_sign = match.group(2)\n        return keyid, const_sign\n    return \"webfanyi-key-getter-2025\", \"yU5nT5dK3eZ1pI4j\" <\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #DCDCAA\">getProductKeys<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #9CDCFE\">key<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&quot;webfanyi&quot;<\/span><span style=\"color: #E6E6E6\">, <\/span><span style=\"color: #9CDCFE\">useTemp<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #569CD6\">False<\/span><span style=\"color: #E6E6E6\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #CE9178\">&quot;&quot;&quot;\u83b7\u53d6\u6709\u9053\u7ffb\u8bd1\u4ea7\u54c1ID\u4e0e\u4ea7\u54c1\u5bc6\u94a5&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #E6E6E6\"> useTemp:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #CE9178\">&quot;webfanyi-key-getter-2025&quot;<\/span><span style=\"color: #E6E6E6\">, <\/span><span style=\"color: #CE9178\">&quot;yU5nT5dK3eZ1pI4j&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    url           <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #CE9178\">&quot;https:\/\/shared.ydstatic.com\/dict\/translation-website\/0.6.6\/js\/app.78e9cb0d.js&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    data          <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> requests.get(url).text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    keyid_pattern <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&#39;async<\/span><span style=\"color: #D7BA7D\">\\(\\{<\/span><span style=\"color: #D16969\">commit:e<\/span><span style=\"color: #D7BA7D\">\\}<\/span><span style=\"color: #D16969\">,t<\/span><span style=\"color: #D7BA7D\">\\)\\=\\&gt;\\{<\/span><span style=\"color: #D16969\">const\\s<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">a=&quot;&#39;<\/span><span style=\"color: #D4D4D4\">+<\/span><span style=\"color: #E6E6E6\">key<\/span><span style=\"color: #D4D4D4\">+<\/span><span style=\"color: #CE9178\">&#39;(&#91;^&quot;&#93;+)&quot;,n=&quot;(&#91;^&quot;&#93;+)&quot;&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    match         <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> re.search(keyid_pattern, data)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #E6E6E6\"> match:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        keyid      <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> key<\/span><span style=\"color: #D4D4D4\">+<\/span><span style=\"color: #E6E6E6\">match.group(<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #E6E6E6\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        const_sign <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> match.group(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #E6E6E6\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #E6E6E6\"> keyid, const_sign<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #CE9178\">&quot;webfanyi-key-getter-2025&quot;<\/span><span style=\"color: #E6E6E6\">, <\/span><span style=\"color: #CE9178\">&quot;yU5nT5dK3eZ1pI4j&quot;<\/span><span style=\"color: #E6E6E6\"> <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u6211\u4eec\u5df2\u77e5\u4eca\u5e74\u7684\u9ed8\u8ba4\u7684<strong>keyid<\/strong>\u4e0e\u4ea7\u54c1\u5bc6\u94a5<strong>secretKey<\/strong>\uff0c\u6545\u53ef\u4ee5\u76f4\u63a5return\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u63a5\u4e0b\u6765\u6211\u4eec\u5206\u6790sign\u4e0emysticTime\u3002<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-3-1024x474.png\" alt=\"\" class=\"wp-image-833\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-3-1024x474.png 1024w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-3-300x139.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-3-768x356.png 768w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-3.png 1125w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u901a\u8fc7\u7f51\u7edc\u8bf7\u6c42\u6253\u65ad\u70b9\uff0c\u6211\u4eec\u53ef\u4ee5\u53d1\u73b0<strong>mysticTime<\/strong>\u53ea\u4e0d\u8fc7\u662f\u4e00\u4e2a\u65f6\u95f4\u6233\uff0c\u6211\u4eec\u7528python\u53ef\u4ee5\u8f7b\u800c\u6613\u4e3e\u5730\u751f\u6210\u4e00\u4e2a\u65f6\u95f4\u6233\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>import ime\n\nmysticTime = str(int(time.time()*1000))<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #E6E6E6\"> ime<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">mysticTime <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #E6E6E6\">(time.time()<\/span><span style=\"color: #D4D4D4\">*<\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #E6E6E6\">))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u540c\u65f6\uff0c<strong>mysticTime<\/strong>\u65f6\u95f4\u6233\u8fd8\u53c2\u52a0\u4e86<strong>sign<\/strong>\u7b7e\u540d\u7684\u5408\u6210\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"402\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-4.png\" alt=\"\" class=\"wp-image-834\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-4.png 871w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-4-300x138.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-4-768x354.png 768w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/figure>\n\n\n\n<p>\u81f3\u6b64\uff0c\u6211\u4eec\u77e5\u9053\u4e86<strong>sign<\/strong>\u7b7e\u540d\u7684\u5408\u6210\u65b9\u5f0f\uff0c\u4ee5\u53ca<strong>sign<\/strong>\u662f\u4e00\u4e2amd5\u4e32\u3002\u901a\u8fc7\u65ad\u70b9\u8c03\u8bd5\u540c\u65f6\u77e5\u9053\u4e86\u6240\u6709\u7684\u8fd4\u56de\u53c2\u6570\uff1aclient\u662f&#8221;fanyideskweb&#8221;, mysticTime\u662f\u65f6\u95f4\u6233,product\u662f&#8221;webfanyi&#8221;\uff0ckey\u662f\u4ea7\u54c1\u5bc6\u94a5\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\u7528python\u8ba1\u7b97sign\u5373\u53ef\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>import hashlib\n\ndef getSign(constSign):\n    \"\"\"\u6839\u636e\u4ea7\u54c1\u5bc6\u94a5\u751f\u6210\u52a0\u5bc6\u7b7e\u540d\"\"\"\n    mysticTime = str(int(time.time() * 1000))\n    sign       = f\"client=fanyideskweb&amp;mysticTime={mysticTime}&amp;product=webfanyi&amp;key={constSign}\"\n\n\n    return hashlib.md5(sign.encode('utf-8')).hexdigest()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #E6E6E6\"> hashlib<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #DCDCAA\">getSign<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #9CDCFE\">constSign<\/span><span style=\"color: #E6E6E6\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #CE9178\">&quot;&quot;&quot;\u6839\u636e\u4ea7\u54c1\u5bc6\u94a5\u751f\u6210\u52a0\u5bc6\u7b7e\u540d&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    mysticTime <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #E6E6E6\">(time.time() <\/span><span style=\"color: #D4D4D4\">*<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #E6E6E6\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    sign       <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;client=fanyideskweb&amp;mysticTime=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #E6E6E6\">mysticTime<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&amp;product=webfanyi&amp;key=<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #E6E6E6\">constSign<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #E6E6E6\"> hashlib.md5(sign.encode(<\/span><span style=\"color: #CE9178\">&#39;utf-8&#39;<\/span><span style=\"color: #E6E6E6\">)).hexdigest()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f20\u5165API<\/h2>\n\n\n\n<p>mysticTime\u548csign\u5206\u6790\u5b8c\u6bd5\u4e86\uff0c\u63a5\u4e0b\u6765\u4f20\u5165\u6709\u9053\u7ed9\u51fa\u7684\u9875\u9762\u7ffb\u8bd1api\u5c31\u975e\u5e38\u5bb9\u6613\u4e86\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>def getKeys():\n    \"\"\"\u83b7\u53d6\u6709\u9053secertKey\u548cAES\u52a0\u5bc6\u7684\u5bc6\u94a5\"\"\"\n\n    keyid, constSign = getProductKeys()\n    sign             = getSign(constSign)\n\n    req  = requests.get(\n        \"https:\/\/dict.youdao.com\/webtranslate\/key\",\n        params = {\n            \"keyid\": keyid,\n            \"sign\": sign,\n            \"client\": \"fanyideskweb\",\n            \"product\": \"webfanyi\",\n            \"appVersion\": \"1.0.0\",\n            \"vendor\": \"web\",\n            \"pointParam\": \"client,mysticTime,product\",\n            \"mysticTime\": str(int(time.time() * 1000)),\n            \"keyfrom\": \"fanyi.web\",\n            \"mid\": \"1\",\n            \"screen\": \"1\",\n            \"model\": \"1\",\n            \"network\": \"wifi\",\n            \"abtest\": \"0\",\n            \"yduuid\": \"abcdefg\"\n        },\n        headers={\n            \"Accept\": \"application\/json, text\/plain, *\/*\",\n            \"Accept-Language\": \"zh-CN,zh;q=0.9\",\n            \"Connection\": \"keep-alive\",\n            \"Content-Type\": \"application\/x-www-form-urlencoded\",\n            \"Origin\": \"https:\/\/fanyi.youdao.com\",\n            \"Referer\": \"https:\/\/fanyi.youdao.com\/\",\n            \"Sec-Fetch-Dest\": \"empty\",\n            \"Sec-Fetch-Mode\": \"cors\",\n            \"Sec-Fetch-Site\": \"same-site\",\n            \"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36\",\n            \"sec-ch-ua\": \"\\\"Google Chrome\\\";v=\\\"131\\\", \\\"Chromium\\\";v=\\\"131\\\", \\\"Not_A Brand\\\";v=\\\"24\\\"\",\n            \"sec-ch-ua-mobile\": \"?0\",\n            \"sec-ch-ua-platform\": \"\\\"Windows\\\"\"\n        }\n    )\n\n    return req.json()&#91;'data'&#93;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #DCDCAA\">getKeys<\/span><span style=\"color: #E6E6E6\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #CE9178\">&quot;&quot;&quot;\u83b7\u53d6\u6709\u9053secertKey\u548cAES\u52a0\u5bc6\u7684\u5bc6\u94a5&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    keyid, constSign <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getProductKeys()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    sign             <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getSign(constSign)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    req  <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> requests.get(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;https:\/\/dict.youdao.com\/webtranslate\/key&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #9CDCFE\">params<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;keyid&quot;<\/span><span style=\"color: #E6E6E6\">: keyid,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;sign&quot;<\/span><span style=\"color: #E6E6E6\">: sign,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;client&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;fanyideskweb&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;product&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;webfanyi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;appVersion&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1.0.0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;vendor&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;web&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;pointParam&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;client,mysticTime,product&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;mysticTime&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #E6E6E6\">(time.time() <\/span><span style=\"color: #D4D4D4\">*<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #E6E6E6\">)),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;keyfrom&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;fanyi.web&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;mid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;screen&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;model&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;network&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;wifi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;abtest&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;yduuid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;abcdefg&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #9CDCFE\">headers<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Accept&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;application\/json, text\/plain, *\/*&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Accept-Language&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;zh-CN,zh;q=0.9&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Connection&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;keep-alive&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Content-Type&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;application\/x-www-form-urlencoded&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Origin&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;https:\/\/fanyi.youdao.com&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Referer&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;https:\/\/fanyi.youdao.com\/&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Sec-Fetch-Dest&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;empty&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Sec-Fetch-Mode&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;cors&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;Sec-Fetch-Site&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;same-site&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;User-Agent&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;sec-ch-ua&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">Google Chrome<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">;v=<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">131<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">, <\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">Chromium<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">;v=<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">131<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">, <\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">Not_A Brand<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">;v=<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">24<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;sec-ch-ua-mobile&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;?0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            <\/span><span style=\"color: #CE9178\">&quot;sec-ch-ua-platform&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">Windows<\/span><span style=\"color: #D7BA7D\">\\&quot;<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #E6E6E6\"> req.json()&#91;<\/span><span style=\"color: #CE9178\">&#39;data&#39;<\/span><span style=\"color: #E6E6E6\">&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u8bf7\u6c42\u4f53\u7684headers\u5199\u4e86\u4e00\u5806\uff0c\u9632\u6b62\u6709\u9053\u8bc6\u522b\u5230\u6211\u4eec\u662f\u722c\u866b\u3002<\/p>\n\n\n\n<p>\u8fd9\u4e2aapi\u8fd4\u56de\u7684\u7ed3\u6784\u662f\u8fd9\u6837\u7684\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"886\" height=\"167\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-6.png\" alt=\"\" class=\"wp-image-836\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-6.png 886w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-6-300x57.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-6-768x145.png 768w\" sizes=\"auto, (max-width: 886px) 100vw, 886px\" \/><\/figure>\n\n\n\n<p>\u81f3\u6b64\uff0c<strong>aesKey<\/strong>\u3001<strong>aesKey<\/strong>\u3001<strong>secretKey<\/strong>\u5df2\u7ecf\u5230\u624b\uff0c\u4e0b\u4e00\u6b65\u5c31\u662f\u5206\u6790\u7ffb\u8bd1\u8bf7\u6c42\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ffb\u8bd1\u8bf7\u6c42<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"917\" height=\"654\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-7.png\" alt=\"\" class=\"wp-image-837\" style=\"width:498px;height:auto\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-7.png 917w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-7-300x214.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-7-768x548.png 768w\" sizes=\"auto, (max-width: 917px) 100vw, 917px\" \/><\/figure>\n\n\n\n<p>\u7ffb\u8bd1\u8bf7\u6c42\u4f53\u5982\u4e0b\uff0c\u53d1\u73b0\u8fd8\u6709\u4e00\u4e2a<strong>sign<\/strong>\u7b7e\u540d\uff0c\u901a\u8fc7<strong>i<\/strong>\u4f20\u5165\u7ffb\u8bd1\u5185\u5bb9\uff0c\u9664\u53bb<strong>mysticTime<\/strong>\u65f6\u95f4\u6233\u4e0e<strong>sign<\/strong>\u7b7e\u540d\u4e0e<strong>i<\/strong>\u7ffb\u8bd1\u5185\u5bb9\u5176\u4ed6\u7167\u642c\u5373\u53ef\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>keyid, constSign         = getProductKeys()\nkeys                     = getKeys()\naeskey, aesiv, secretKey = keys&#91;'aesKey'&#93;, keys&#91;'aesIv'&#93;, keys&#91;'secretKey'&#93;\n\ncontent    = \"Hello world!\"\nsign       = getSign(constSign)\nmysticTime = str(int(time.time())*1000)\n\ndata = {\n        \"i\": content,\n        \"from\": \"auto\",\n        \"to\": \"\",\n        \"useTerm\": \"false\",\n        \"dictResult\": \"true\",\n        \"keyid\": \"webfanyi\",\n        \"sign\": sign,\n        \"client\": \"fanyideskweb\",\n        \"product\": \"webfanyi\",\n        \"appVersion\": \"1.0.0\",\n        \"vendor\": \"web\",\n        \"pointParam\": \"client,mysticTime,product\",\n        \"mysticTime\": mysticTime,\n        \"keyfrom\": \"fanyi.web\",\n        \"mid\": \"1\",\n        \"screen\": \"1\",\n        \"model\": \"1\",\n        \"network\": \"wifi\",\n        \"abtest\": \"0\",\n        \"yduuid\": \"abcdefg\"\n    }\n    \nreq = requests.post(\n    \"https:\/\/dict.youdao.com\/webtranslate\",\n    data=data,\n    headers=headers #\u7167\u642cgetKeys()\u7684headers\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E6E6E6\">keyid, constSign         <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getProductKeys()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">keys                     <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getKeys()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">aeskey, aesiv, secretKey <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> keys&#91;<\/span><span style=\"color: #CE9178\">&#39;aesKey&#39;<\/span><span style=\"color: #E6E6E6\">&#93;, keys&#91;<\/span><span style=\"color: #CE9178\">&#39;aesIv&#39;<\/span><span style=\"color: #E6E6E6\">&#93;, keys&#91;<\/span><span style=\"color: #CE9178\">&#39;secretKey&#39;<\/span><span style=\"color: #E6E6E6\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">content    <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #CE9178\">&quot;Hello world!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">sign       <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getSign(constSign)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">mysticTime <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #E6E6E6\">(time.time())<\/span><span style=\"color: #D4D4D4\">*<\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #E6E6E6\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">data <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;i&quot;<\/span><span style=\"color: #E6E6E6\">: content,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;from&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;auto&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;to&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;useTerm&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;false&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;dictResult&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;true&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;keyid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;webfanyi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;sign&quot;<\/span><span style=\"color: #E6E6E6\">: sign,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;client&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;fanyideskweb&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;product&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;webfanyi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;appVersion&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1.0.0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;vendor&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;web&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;pointParam&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;client,mysticTime,product&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;mysticTime&quot;<\/span><span style=\"color: #E6E6E6\">: mysticTime,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;keyfrom&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;fanyi.web&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;mid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;screen&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;model&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;network&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;wifi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;abtest&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;yduuid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;abcdefg&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">req <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> requests.post(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #CE9178\">&quot;https:\/\/dict.youdao.com\/webtranslate&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\">data,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #9CDCFE\">headers<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\">headers <\/span><span style=\"color: #6A9955\">#\u7167\u642cgetKeys()\u7684headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u5f53\u6211\u4eec\u6ee1\u6000\u81ea\u4fe1\u7684\u53d1\u51fa\u8bf7\u6c42\uff0c\u60f3\u8981\u770b\u4e00\u770b\u4f20\u8fc7\u6765\u7684\u662f\u4ec0\u4e48\u9b3c\u65f6\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>b'Z21kD9ZK1ke6ugku2ccWuwRmpItPkRr5XcmzOgAKD0GcaHTZL9kyNKkN2aYY6yiOsLn2LgwT3M7YfpS83Et8_-h-T2llX1W8o8f8AAIdVCZj_25XJLSNk4MewoP55Y1cbwn8iz3yASTwzqRaCtsJ9FGdSPF-SvhmQ3wJMIWXXZqvzJZKCuu7mBoa9xmfiRgJXmJhg_MRrD-e18WoIe0fGaktOlQJPX14xqTrYaQRlOXbBF4aeEWYBf-dh9-ZqcFP7jSJGEG9zJhH7oT-VskBzA=='<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">b<\/span><span style=\"color: #CE9178\">&#39;Z21kD9ZK1ke6ugku2ccWuwRmpItPkRr5XcmzOgAKD0GcaHTZL9kyNKkN2aYY6yiOsLn2LgwT3M7YfpS83Et8_-h-T2llX1W8o8f8AAIdVCZj_25XJLSNk4MewoP55Y1cbwn8iz3yASTwzqRaCtsJ9FGdSPF-SvhmQ3wJMIWXXZqvzJZKCuu7mBoa9xmfiRgJXmJhg_MRrD-e18WoIe0fGaktOlQJPX14xqTrYaQRlOXbBF4aeEWYBf-dh9-ZqcFP7jSJGEG9zJhH7oT-VskBzA==&#39;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u8fd9\u662f\u4ec0\u4e48\u9b3c\uff1f\u800c\u4e14\u6211\u4eec\u53d1\u73b0\uff0c\u76f8\u540c\u7684\u7ffb\u8bd1\u8bf7\u6c42\u5185\u5bb9\u591a\u6b21\u91cd\u590d\uff0c\u53d1\u73b0\u8fd4\u56de\u7684\u4e1c\u897f\u6839\u672c\u4e0d\u662f\u4e00\u6837\u7684\uff01<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"183\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-8-1024x183.png\" alt=\"\" class=\"wp-image-838\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-8-1024x183.png 1024w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-8-300x54.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-8-768x138.png 768w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-8.png 1295w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\uff08\u4e0a\u9762\u7684\u4ee3\u7801\u662f\u5728\u89e3\u5bc6\u5de5\u4f5c\u5b8c\u6210\u540e\u51fa\u73b0\u7684\u9519\u8bef\uff0c\u6211\u63d0\u524d\u5230\u6b64\u5904\u8bb2\uff09<\/p>\n\n\n\n<p>\u8bf4\u660e\u6211\u4eec\u7684\u4ee3\u7801\u88ab\u68c0\u6d4b\u5230\u4e86\u662f\u722c\u866b\uff0c\u6709\u9053<strong><em>\u6545\u610f\u8fd4\u56de<\/em><\/strong>\u4e00\u5806\u9519\u8bef\u6587\u6458\u7ed9\u6211\u4eec\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ffb\u8bd1\u8bf7\u6c42 &#8211; sign<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"207\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-9.png\" alt=\"\" class=\"wp-image-839\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-9.png 890w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-9-300x70.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-9-768x179.png 768w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/figure>\n\n\n\n<p>\u6211\u4eec\u56de\u5230\u65ad\u70b9\uff0c\u53d1\u73b0\u7ee7\u7eed\u5f80\u4e0b\u6267\u884c\uff0c\u51fd\u6570<strong>function k<\/strong>\u5c45\u7136\u6267\u884c\u4e86\u4e24\u6b21\uff01\u6211\u4eec\u5148\u524d\u4ec5\u5206\u6790\u4e86\u83b7\u53d6<strong>aesKey<\/strong>\u7b49\u7684\u65f6\u5019\u6267\u884c\u7684\u51fd\u6570\uff0c\u4f46\u662f\u6b64\u65f6\u7b2c\u4e8c\u6b21\u6267\u884c\u6211\u4eec\u6ca1\u6709\u6ce8\u610f\u5230\u3002<\/p>\n\n\n\n<p>\u4ed4\u7ec6\u5206\u6790\u5373\u53ef\u53d1\u73b0\uff0c\u4f20\u5165\u7684\u53c2\u6570<strong><em>e<\/em><\/strong>\u7531\u4ea7\u54c1\u5bc6\u94a5<strong>constSign<\/strong>\u53d8\u4e3a\u4e86<strong>secretKey<\/strong>\uff01<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"106\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-10.png\" alt=\"\" class=\"wp-image-840\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-10.png 703w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-10-300x45.png 300w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/figure>\n\n\n\n<p>\u6240\u4ee5\u6211\u4eec\u77e5\u9053\u4e86\uff0c<strong>secretKey<\/strong>\u662f\u7ffb\u8bd1\u8bf7\u6c42\u5bc6\u94a5\uff0c\u5982\u679capi\u68c0\u6d4b\u5230\u4e86\u7ffb\u8bd1\u8bf7\u6c42\u5bc6\u94a5\u662f\u9519\u8bef\u7684\uff0c\u5c06\u4f1a\u968f\u673a\u6458\u9009\u4e00\u6bb5\u6587\u672c\u8fd4\u56de\u7ed9\u6211\u4eec\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>keyid, constSign         = getProductKeys()\nkeys                     = getKeys()\naeskey, aesiv, secretKey = keys&#91;'aesKey'&#93;, keys&#91;'aesIv'&#93;, keys&#91;'secretKey'&#93;\n\ncontent    = \"Hello world!\"\nsign       = getSign(secretKey)     # \u8bf7\u6c42\u7ffb\u8bd1\u65f6\u4f7f\u7528secretKey\uff0c\u83b7\u53d6\u5bc6\u94a5\u65f6\u4f7f\u7528constSign\nmysticTime = str(int(time.time())*1000)\n\ndata = {\n        \"i\": content,\n        \"from\": \"auto\",\n        \"to\": \"\",\n        \"useTerm\": \"false\",\n        \"dictResult\": \"true\",\n        \"keyid\": \"webfanyi\",\n        \"sign\": sign,\n        \"client\": \"fanyideskweb\",\n        \"product\": \"webfanyi\",\n        \"appVersion\": \"1.0.0\",\n        \"vendor\": \"web\",\n        \"pointParam\": \"client,mysticTime,product\",\n        \"mysticTime\": mysticTime,\n        \"keyfrom\": \"fanyi.web\",\n        \"mid\": \"1\",\n        \"screen\": \"1\",\n        \"model\": \"1\",\n        \"network\": \"wifi\",\n        \"abtest\": \"0\",\n        \"yduuid\": \"abcdefg\"\n    }\n    \nreq = requests.post(\n    \"https:\/\/dict.youdao.com\/webtranslate\",\n    data=data,\n    headers=headers #\u7167\u642cgetKeys()\u7684headers\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E6E6E6\">keyid, constSign         <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getProductKeys()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">keys                     <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getKeys()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">aeskey, aesiv, secretKey <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> keys&#91;<\/span><span style=\"color: #CE9178\">&#39;aesKey&#39;<\/span><span style=\"color: #E6E6E6\">&#93;, keys&#91;<\/span><span style=\"color: #CE9178\">&#39;aesIv&#39;<\/span><span style=\"color: #E6E6E6\">&#93;, keys&#91;<\/span><span style=\"color: #CE9178\">&#39;secretKey&#39;<\/span><span style=\"color: #E6E6E6\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">content    <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #CE9178\">&quot;Hello world!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">sign       <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> getSign(secretKey)     <\/span><span style=\"color: #6A9955\"># \u8bf7\u6c42\u7ffb\u8bd1\u65f6\u4f7f\u7528secretKey\uff0c\u83b7\u53d6\u5bc6\u94a5\u65f6\u4f7f\u7528constSign<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">mysticTime <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #E6E6E6\">(<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #E6E6E6\">(time.time())<\/span><span style=\"color: #D4D4D4\">*<\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #E6E6E6\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">data <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;i&quot;<\/span><span style=\"color: #E6E6E6\">: content,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;from&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;auto&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;to&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;useTerm&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;false&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;dictResult&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;true&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;keyid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;webfanyi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;sign&quot;<\/span><span style=\"color: #E6E6E6\">: sign,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;client&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;fanyideskweb&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;product&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;webfanyi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;appVersion&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1.0.0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;vendor&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;web&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;pointParam&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;client,mysticTime,product&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;mysticTime&quot;<\/span><span style=\"color: #E6E6E6\">: mysticTime,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;keyfrom&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;fanyi.web&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;mid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;screen&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;model&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;1&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;network&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;wifi&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;abtest&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;0&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        <\/span><span style=\"color: #CE9178\">&quot;yduuid&quot;<\/span><span style=\"color: #E6E6E6\">: <\/span><span style=\"color: #CE9178\">&quot;abcdefg&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">req <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> requests.post(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #CE9178\">&quot;https:\/\/dict.youdao.com\/webtranslate&quot;<\/span><span style=\"color: #E6E6E6\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #9CDCFE\">data<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\">data,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #9CDCFE\">headers<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\">headers <\/span><span style=\"color: #6A9955\">#\u7167\u642cgetKeys()\u7684headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u6211\u4eec\u5c06\u83b7\u53d6\u7ffb\u8bd1\u5185\u5bb9\u7684\u51fd\u6570\u5185\uff0c\u8bf7\u6c42\u90e8\u5206\u7684<strong>sign<\/strong>\u66ff\u6362\u4e3a\u4e86<strong>secretKey<\/strong>\uff0c\u7ed3\u679c\u8bc1\u660e\u6211\u4eec\u662f\u6b63\u786e\u7684\uff0c\u8fd4\u56de\u7684\u52a0\u5bc6\u5185\u5bb9\u957f\u5ea6\u53d8\u4e3a\u4e00\u81f4\u7684\u4e86\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AES\u89e3\u7801\u7ffb\u8bd1\u5185\u5bb9<\/h2>\n\n\n\n<p>\u6211\u4eec\u8be5\u5982\u4f55\u5927\u6218\u8fd9\u4e00\u5768\u7ffb\u8bd1\u5185\u5bb9\u5176\u5b9e\u5df2\u7ecf\u5f88\u660e\u663e\u4e86\uff0c\u6709\u9053\u7684API\u5df2\u7ecf\u63d0\u4f9b\u7ed9\u6211\u4eec\u4e86<strong>aesKey<\/strong>\u4e0e<strong>aesIv<\/strong>\uff0c\u4f20\u5165\u89e3\u7801\u5373\u53ef\uff0c\u6839\u636eapp.js\u5185\u5bb9\u53ef\u4ee5\u53d1\u73b0\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"934\" height=\"225\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-11.png\" alt=\"\" class=\"wp-image-841\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-11.png 934w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-11-300x72.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2025\/07\/image-11-768x185.png 768w\" sizes=\"auto, (max-width: 934px) 100vw, 934px\" \/><\/figure>\n\n\n\n<p>\u5176\u4e2d\u7684t\u548ca\u5206\u522b\u5c31\u662f<strong>aesKey<\/strong>\u4e0e<strong>aesIv<\/strong>\u3002<\/p>\n\n\n\n<p>\u800c\u5bf9<strong>aesKey<\/strong>\u548c<strong>aesIv<\/strong>\u8fdb\u884c\u4e86<strong>function T<\/strong>\u64cd\u4f5c\uff0c\u524d\u6587\u5df2\u7ecf\u77e5\u9053function T\u53ea\u662f\u4e00\u4e2amd5\u52a0\u5bc6\u51fd\u6570\u3002<\/p>\n\n\n\n<p>\u81f3\u6b64\u53ef\u4ee5\u8fdb\u884c\u89e3\u7801\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#222222\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#E6E6E6;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>    from Crypto.Cipher import AES\n    from Crypto.Util.Padding import pad, unpad\n    \n    encodeAesKey, encodeAesIv = hashlib.md5(\n            aeskey.encode()\n        ).digest(), hashlib.md5(\n            aesiv.encode()\n        ).digest() # \u5bf9aeskey\u548caesiv\u8fdb\u884cmd5\u52a0\u5bc6\u64cd\u4f5c\n    \n    cipher = AES.new(encodeAesKey, AES.MODE_CBC, encodeAesIv)\n    ctxs   = base64.urlsafe_b64decode(req.text)\n    \n    decrypted = unpad(cipher.decrypt(ctxs), AES.block_size)\n    print(decrypted.decode())\n    \n    return decrypted.decode('utf-8')<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki slack-dark\" style=\"background-color: #222222\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #E6E6E6\"> Crypto.Cipher <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #E6E6E6\"> AES<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #E6E6E6\"> Crypto.Util.Padding <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #E6E6E6\"> pad, unpad<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    encodeAesKey, encodeAesIv <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> hashlib.md5(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            aeskey.encode()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        ).digest(), hashlib.md5(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">            aesiv.encode()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">        ).digest() <\/span><span style=\"color: #6A9955\"># \u5bf9aeskey\u548caesiv\u8fdb\u884cmd5\u52a0\u5bc6\u64cd\u4f5c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    cipher <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> AES.new(encodeAesKey, AES.MODE_CBC, encodeAesIv)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    ctxs   <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> base64.urlsafe_b64decode(req.text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    decrypted <\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #E6E6E6\"> unpad(cipher.decrypt(ctxs), AES.block_size)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #E6E6E6\">(decrypted.decode())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E6E6E6\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #E6E6E6\"> decrypted.decode(<\/span><span style=\"color: #CE9178\">&#39;utf-8&#39;<\/span><span style=\"color: #E6E6E6\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u5168\u90e8\u4ee3\u7801<\/h2>\n\n\n\n<p><a href=\"https:\/\/github.com\/Himpq\/youdao-translate-api\">https:\/\/github.com\/Himpq\/youdao-translate-api<\/a> &#8211; \u6709\u9053\u7ffb\u8bd1\u9006\u5411api<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<p>\u8be5\u63a5\u53e3\u5b58\u5728\u8bf8\u591a\u9650\u5236\uff0c\u5b57\u8bcd\u6570\u91cf\u9650\u5236\u672a\u77e5\uff0c\u4f46\u662f\u77ed\u671f\u5927\u91cf\u8bbf\u95ee\u4f1a\u4ea7\u751f\u9519\u8bef\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u58f0\u660e\uff1a\u672c\u6587\u7ae0\u4ec5\u7528\u4e8e\u5b66\u4e60\u63a2\u8ba8\uff0c\u8bf7\u52ff\u7528\u4e8e\u4efb\u4f55\u8fdd\u53cd\u6cd5\u5f8b\u7684\u7528\u9014\uff0c\u5982\u6709\u4fb5\u6743\u8bf7\u8054\u7cfb\u4e0b\u67b6\u3002 \u6709\u9053web\u7ffb\u8bd1\u8bf7\u6c42\u6d41\u7a0b \u770b\u7740\u662f\u4e0d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-827","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=827"}],"version-history":[{"count":10,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/827\/revisions"}],"predecessor-version":[{"id":849,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/827\/revisions\/849"}],"wp:attachment":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}