<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>教程 on MoeJue&#39;s Blog</title>
    <link>https://en.moejue.cn/zh-hant/tags/%E6%95%99%E7%A8%8B/</link>
    <description>Recent content in 教程 on MoeJue&#39;s Blog</description>
    <generator>Hugo -- 0.151.2</generator>
    <language>zh-hant</language>
    <lastBuildDate>Sun, 06 Jul 2025 14:25:09 +0000</lastBuildDate>
    <atom:link href="https://en.moejue.cn/zh-hant/tags/%E6%95%99%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[筆記] Git 常用命令大全（按場景分類）</title>
      <link>https://en.moejue.cn/zh-hant/posts/264/</link>
      <pubDate>Mon, 02 Jun 2025 06:58:42 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/264/</guid>
      <description>&lt;p&gt;適用於日常開發中對 Git 的常見操作。透過分類整理，幫助你快速上手或查閱。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-基礎指令&#34;&gt;📦 基礎指令&lt;/h2&gt;
&lt;p&gt;指令&lt;/p&gt;
&lt;p&gt;用途&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;初始化一個 Git 儲存庫（建立 &lt;code&gt;.git&lt;/code&gt; 資料夾）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;將遠端儲存庫複製到本地。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;查看目前工作目錄狀態（檔案修改、暫存等）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;將檔案新增到暫存區。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git commit -m &amp;quot;message&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;提交暫存區檔案到本地儲存庫，並新增提交訊息。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;查看提交歷史。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-分支管理&#34;&gt;🌱 分支管理&lt;/h2&gt;
&lt;p&gt;指令&lt;/p&gt;
&lt;p&gt;用途&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;查看本地分支列表。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git branch &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;建立一個新分支。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git checkout &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;切換到指定分支。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git switch &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;切換到指定分支（推薦使用的新指令）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git merge &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;將指定分支合併到目前分支。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git branch -d &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;刪除已合併的分支。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git branch -D &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;強制刪除分支。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-遠端儲存庫操作&#34;&gt;🌍 遠端儲存庫操作&lt;/h2&gt;
&lt;p&gt;指令&lt;/p&gt;
&lt;p&gt;用途&lt;/p&gt;</description>
    </item>
    <item>
      <title>打贏復活賽,我活過來了</title>
      <link>https://en.moejue.cn/zh-hant/posts/206/</link>
      <pubDate>Thu, 03 Oct 2024 02:48:02 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/206/</guid>
      <description>&lt;h3 id=&#34;近況&#34;&gt;近況&lt;/h3&gt;
&lt;p&gt;距離上次的閒言碎語已經兩個多月沒說話了，是時候整理整理我的思緒了。上回是發表了一堆感慨，之後就沒聲了，所以是有一點倉促了，後續的活就跟不上了。&lt;/p&gt;
&lt;p&gt;又是一年國慶，果然我的國慶堪比雙十一。之前旗下的三個域名(52ecy.cn,moeins.cn,moeins.com)，雖然復活賽是打贏了，但是裝備沒有了。&lt;/p&gt;
&lt;p&gt;所以只能新購域名了，同時又把部落格給恢復了，可能還是想自己折騰吧，掛靠在部落格園還是不大舒服的樣子。&lt;/p&gt;
&lt;p&gt;之前一直在用的emlog，這會也來場大動作，直接給系統換到了WordPress，同時也換上了新主題。這款主題是由&lt;a href=&#34;https://www.boxmoe.com/&#34;&gt;專收爆米花&lt;/a&gt;在21年前後的時候就發布了，那會我在loc看到的時候我就star了，一直在我GitHub裡躺了4年&lt;a href=&#34;https://github.com/iAJue/lolimeow&#34;&gt;lolimeow&lt;/a&gt;，因為那會一直在用emlog，所以就不願意折騰。乘此契機，乾脆一戰到底，所以也是花了一點大功夫，包括數據的遷移，和主題的適配。&lt;/p&gt;
&lt;p&gt;雖然作者一直以來都在積極推進主題的更新，也正因此我在使用中沒有遇到太大的麻煩，但也有缺少我之前系統的設定，所以我也一併把這個主題做了更新，並且pull到了原倉庫。上面放的GitHub的連結是我更新後的。&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu90no7xm8j20w414kdue.jpg&#34;&gt; 最麻煩的數據遷移部分，我在網上兜兜轉轉了半天，只找到exe版本的，先不說exe版本給人一種莫名的不放心的感覺，況且我現在用的還是Mac的系統，根本就不能直接運行。所謂自己動手豐衣足食，所以我只能花點時間給自己寫一個遷移腳本了。GitHub的地址我放在了文章的底部了，可以完美遷移emlog的數據到WordPress系統中。不愧是我！&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu86bsccndj21hc0u0gr1.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;圖片我還是一樣，一份存七牛雲備份，一份存新浪圖床，轉過來發現市場上沒有好用適合我的七牛雲插件，我又自己撸了一個 &lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu8aervippj20z608i0ws.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu8aexj66gj20zw12yk01.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;新域名&#34;&gt;新域名&lt;/h3&gt;
&lt;p&gt;雖然我也很不想，但是又只能換域名了，之前的域名就給人做嫁衣了。萌音系列: MoeKot.cn。萌音系列的包括(萌音筆記、萌音發卡、萌音社群、萌音商城等)以後都會放在這個域名下。主站系列: MoeJue.cn。這是我的主站，包括部落格和一些不帶系列的項目都會放到這個域名下面。&lt;/p&gt;
&lt;h4 id=&#34;解釋&#34;&gt;解釋&lt;/h4&gt;
&lt;p&gt;Moe: 日文裡的「萌え」的讀音，羅馬音的寫法，中文裡一般翻譯成「萌」。
Kot: 日語「聲音」的意思，羅馬音寫法。
Jue: 阿珏醬的簡版音譯。&lt;/p&gt;
&lt;h3 id=&#34;部落格&#34;&gt;部落格&lt;/h3&gt;
&lt;p&gt;我又是一個特別念舊和重感情的人，所以連之前的部落格我都一同保留下來了。&lt;a href=&#34;http://xlog.moejue.cn/&#34;&gt;Xlog&lt;/a&gt; &lt;a href=&#34;https://www.cnblogs.com/Ajue&#34;&gt;cnblogs&lt;/a&gt; &lt;a href=&#34;https://log.MoeJue.cn&#34;&gt;emlog&lt;/a&gt; &lt;a href=&#34;https://blog.moejue.cn&#34;&gt;Blog&lt;/a&gt; 相關的網站的域名我也做了遷移，就不一一列出來了，當然也可能會漏掉一些連結沒替換全。&lt;/p&gt;
&lt;p&gt;所有的數據都是原汁原味的，不漏掉每一個人的數據。甚至是部落格的註冊用戶的數據我也一同搬遷過來了，可以直接在新系統上登入，密碼是一樣的。&lt;/p&gt;
&lt;h5 id=&#34;快來star一下吧&#34;&gt;快來star一下吧！&lt;/h5&gt;
&lt;p&gt;食用方法也一併寫到了README.md裡了，如果遇到什麼問題也可以直接提交issue。&lt;/p&gt;
&lt;h4 id=&#34;emlog遷移wordpress腳本&#34;&gt;&lt;a href=&#34;https://github.com/iAJue/migrate_emlog_to_wp&#34;&gt;emlog遷移WordPress腳本&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;我的部落格即將同步至騰訊雲開發者社群，邀請大家一同入駐：&lt;a href=&#34;https://cloud.tencent.com/developer/support-plan?invite%5c_code=15kxzzid10tgx&#34;&gt;https://cloud.tencent.com/developer/support-plan?invite_code=15kxzzid10tgx&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>什麼是Web3.0，與區塊鏈又有什麼關係？</title>
      <link>https://en.moejue.cn/zh-hant/posts/202/</link>
      <pubDate>Mon, 17 Jun 2024 12:59:22 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/202/</guid>
      <description>&lt;p&gt;又是一個莫名其妙的詞語的新起-。- 我大致歸納為以下幾個點&lt;/p&gt;
&lt;h2 id=&#34;什麼是web30&#34;&gt;什麼是web3.0&lt;/h2&gt;
&lt;p&gt;Web 3.0（Web3）是下一代網際網路的發展方向，旨在創建一個更加去中心化、用戶控制和數據保護的網路環境。與之前的Web 1.0（靜態網頁）和Web 2.0（動態、互動式網頁和社交媒體）不同，Web 3.0的核心理念和技術包括以下幾個方面：&lt;/p&gt;
&lt;h3 id=&#34;去中心化&#34;&gt;去中心化：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;區塊鏈技術：Web 3.0的核心是區塊鏈技術，它提供了一個去中心化的帳本，記錄所有的交易和數據變化。這意味著數據不再由單一的中央伺服器控制，而是分佈在多個節點上。&lt;/li&gt;
&lt;li&gt;分佈式應用（DApps）：這些應用程式運行在區塊鏈網路上，沒有中心化的控制者。DApps的用戶可以直接進行交易和互動，而無需通過中介機構。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;用戶控制和數據保護&#34;&gt;用戶控制和數據保護：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用戶主權身份：在Web 3.0中，用戶可以完全控制自己的數位身份和數據。通過加密技術，用戶可以決定誰可以訪問他們的数据以及如何使用這些數據。&lt;/li&gt;
&lt;li&gt;數據所有權：用戶的數據儲存在去中心化的網路上，用戶擁有數據的所有權，而不是由大公司集中管理和控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;智能合約&#34;&gt;智能合約：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;自動執行協議：智能合約是在區塊鏈上運行的自動化協議，當滿足特定條件時自動執行。這種技術可以用於各種場景，如金融交易、供應鏈管理和法律合約。 互操作性：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;跨平台和跨鏈技術：Web 3.0致力於實現不同區塊鏈和分佈式網路之間的互操作性，使得數據和資產可以在不同平台之間無縫轉移。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;去信任化和透明度&#34;&gt;去信任化和透明度：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;無信任機制：Web 3.0通過區塊鏈技術實現了無信任機制，即參與者無需互相信任或依賴第三方中介，就能進行安全的交易和互動。&lt;/li&gt;
&lt;li&gt;透明性：所有交易和數據變更記錄在區塊鏈上，公開透明且不可篡改，提高了信任度和安全性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;web-30的應用場景&#34;&gt;Web 3.0的應用場景&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;去中心化金融（DeFi）：通過智能合約和區塊鏈技術，提供無需中介的金融服務，如借貸、交易和投資。&lt;/li&gt;
&lt;li&gt;數位身份：用戶可以創建和管理自己的數位身份，控制個人數據的訪問和使用。&lt;/li&gt;
&lt;li&gt;供應鏈管理：通過區塊鏈技術，實現供應鏈的透明和可追溯性，防止偽造和欺詐。&lt;/li&gt;
&lt;li&gt;內容創作和分發：藝術家、音樂家和作家可以直接與觀眾互動和交易，獲得更公平的收益分配。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;那什麼又是區塊鏈呢&#34;&gt;那什麼又是區塊鏈呢？&lt;/h2&gt;
&lt;p&gt;區塊鏈技術是一種分佈式帳本技術（Distributed Ledger Technology, DLT），用於記錄交易和資訊的不可篡改、去中心化的資料庫。區塊鏈技術的核心思想是通過去中心化的方式實現數據的安全、透明和可信。&lt;/p&gt;
&lt;h3 id=&#34;區塊鏈的基本原理&#34;&gt;區塊鏈的基本原理&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;區塊（Block）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;區塊是包含交易記錄的數據包。每個區塊包含多個交易和一個哈希值（用於唯一標識該區塊）。&lt;/li&gt;
&lt;li&gt;區塊還包含上一個區塊的哈希值，從而將所有區塊連接成鏈，形成區塊鏈。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;鏈（Chain）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;區塊通過哈希值相互連接，形成一個鏈式結構。每個區塊包含前一個區塊的哈希值，這使得區塊鏈中的數據難以篡改。&lt;/li&gt;
&lt;li&gt;如果試圖更改一個區塊中的數據，將導致該區塊及其後續所有區塊的哈希值發生變化，需要重新計算所有這些區塊的哈希值，這幾乎是不可能的。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;去中心化（Decentralization）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;區塊鏈網路中的所有節點（電腦）都保存一個完整的區塊鏈副本，這些副本通過共識機制保持一致。&lt;/li&gt;
&lt;li&gt;沒有中央機構控制或管理區塊鏈，數據由所有節點共同維護。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共識機制（Consensus Mechanism）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;區塊鏈網路使用共識機制來確保所有節點對區塊鏈的狀態達成一致。常見的共識機制包括工作量證明（Proof of Work, PoW）和權益證明（Proof of Stake, PoS）。&lt;/li&gt;
&lt;li&gt;工作量證明（PoW）：礦工通過解決複雜的數學問題來驗證交易，並將其添加到區塊鏈中。解決問題需要大量計算能力，確保了區塊鏈的安全性。 權益證明（PoS）：驗證者根據其持有的加密貨幣數量和其他因素來驗證交易，並獲得相應的獎勵。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;加密技術（Cryptography）： -區塊鏈使用加密技術確保數據的安全性和隱私性。每個交易都使用公鑰和私鑰進行簽名和驗證，確保只有合法的所有者才能發起交易。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;區塊鏈的優點&#34;&gt;區塊鏈的優點&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;安全性：
&lt;ul&gt;
&lt;li&gt;數據分佈在多個節點上，沒有單點故障，攻擊者難以篡改數據。 每個區塊包含上一個區塊的哈希值，篡改一個區塊需要更改整個鏈條，成本極高。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2.透明性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;區塊鏈上的所有交易記錄都是公開可見的，任何人都可以查閱。 交易記錄不可篡改，提高了系統的透明度和信任度。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3.去中心化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;沒有中央控制機構，所有節點平等參與網路的維護和管理，防止了單點控制和權力集中。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4.不可篡改性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一旦數據被寫入區塊鏈，就很難被篡改，確保了數據的完整性和真實性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;區塊鏈的應用場景&#34;&gt;區塊鏈的應用場景&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;加密貨幣：&lt;/p&gt;</description>
    </item>
    <item>
      <title>基於Web3.0的區塊鏈圖片上傳</title>
      <link>https://en.moejue.cn/zh-hant/posts/201/</link>
      <pubDate>Mon, 17 Jun 2024 12:57:43 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/201/</guid>
      <description>&lt;p&gt;在開始之前，我們先簡單了解一下基本的概念，我大致歸納為以下幾個點 &lt;a href=&#34;https://www.cnblogs.com/Ajue/p/18252827&#34;&gt;什麼是Web3.0，和區塊鏈又有什麼關係？&lt;/a&gt;（上回的文章不就派上用場了）&lt;/p&gt;
&lt;p&gt;需求：開發一個基於Python的Web 3.0圖片上傳系統。這個系統將允許用戶上傳圖片，並將圖片儲存在去中心化的網路上，同時記錄交易資訊在區塊鏈上。 本來只是寫著玩的，想過要寫成用戶認證、檔案操作集成全套管理的，讓他「終將成為圖片上傳服務的最終解決方案」。實際下來卻發現不是很實際，就作罷了，奈何我一直以來對圖片這麼執著。&lt;/p&gt;
&lt;h3 id=&#34;步驟概述&#34;&gt;步驟概述&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;環境設定&lt;/strong&gt;：使用Python開發，安裝必要的Python函式庫。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPFS整合&lt;/strong&gt;：將圖片上傳到IPFS，取得圖片的CID（內容識別碼）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;區塊鏈整合&lt;/strong&gt;：將IPFS CID記錄在區塊鏈上。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web介面&lt;/strong&gt;：使用Flask建立一個Web介面，允許用戶上傳圖片。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;詳細步驟&#34;&gt;詳細步驟&lt;/h3&gt;
&lt;h4 id=&#34;1-環境設定&#34;&gt;1. 環境設定&lt;/h4&gt;
&lt;p&gt;安裝所需的Python函式庫：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pip install flask web3 ipfshttpclient
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;2-ipfs整合&#34;&gt;2. IPFS整合&lt;/h4&gt;
&lt;p&gt;IPFS（星際檔案系統）是一種點對點的檔案儲存協定。我們可以使用&lt;code&gt;ipfshttpclient&lt;/code&gt;函式庫來與IPFS網路互動。&lt;/p&gt;
&lt;p&gt;首先，請確保你已經安裝並運行了IPFS節點。如果還沒有安裝IPFS，可以在&lt;a href=&#34;https://ipfs.io&#34;&gt;IPFS官網&lt;/a&gt;找到安裝指南。&lt;/p&gt;
&lt;p&gt;以下是上傳圖片到IPFS的程式碼範例：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;import ipfshttpclient

def upload_to_ipfs(file_path):
    client = ipfshttpclient.connect(&amp;#39;/ip4/127.0.0.1/tcp/5001&amp;#39;)
    res = client.add(file_path)
    return res[&amp;#39;Hash&amp;#39;]
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;3-區塊鏈整合&#34;&gt;3. 區塊鏈整合&lt;/h4&gt;
&lt;p&gt;使用&lt;code&gt;web3.py&lt;/code&gt;函式庫將IPFS CID記錄到區塊鏈上。我們將以太坊（Ethereum）作為範例區塊鏈。&lt;/p&gt;
&lt;p&gt;以下是一個簡單的智能合約範例，用於儲存IPFS CID：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pragma solidity ^0.8.0;

contract IPFSStorage {
    mapping(address =&amp;gt; string[]) public userCIDs;

    function storeCID(string memory cid) public {
        userCIDs[msg.sender].push(cid);
    }

    function getCIDs() public view returns (string[] memory) {
        return userCIDs[msg.sender];
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;編譯並部署該合約後，使用以下Python程式碼與智能合約互動：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android 檢視 APK 安裝包的 AndroidManifest.xml 檔案</title>
      <link>https://en.moejue.cn/zh-hant/posts/110/</link>
      <pubDate>Sun, 19 Apr 2020 09:15:54 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/110/</guid>
      <description>&lt;p&gt;&lt;strong&gt;起因&lt;/strong&gt;
上週在做安卓系統的廠商推送功能，某些機型無法離線廠推，所以準備解包apk看一下打包參數是否出問題。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;序言&lt;/strong&gt;
在Android開發中，可能需要從我們自己的應用程式跳轉到別的應用程式的介面，但是在不知道別的應用程式的包名以及類名（class name）的情況下，是很難做到這一點的。有個最簡單的方法就是下載應用程式的apk檔案，然後修改副檔名為zip或者rar，之後解壓縮檔案。在解壓縮出來的檔案中，就會有一個AndroidManifest.xml的檔案，但是打開之後，可能是亂碼，這就尷尬了，那怎麼辦呢？&lt;/p&gt;
&lt;p&gt;AXMLPrinter2.jar是一款常用的apk反編譯工具，主要用於反編譯apk檔案，包括包名、版本號和圖示等資訊，可以用AXMLPrinter2對androidmanifest.xml反編譯進行明文查看。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用方法&lt;/strong&gt;
1、 下載工具AXMLPrinter2.jar工具 地址：https://code.google.com/archive/p/android4me/downloads
2、 將要查看的AndroidManfist.xml檔案複製至與工具相同資料夾下
3、 在當前資料夾打開DOS視窗
4、 執行如下命令&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;java -jar AXMLPrinter2.jar AndroidManifest.xml &amp;gt;&amp;gt; AndroidManifest.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;執行完該命令後會在該資料夾生成AndroidManifest.txt檔案，該檔案便是解碼後的檔案。&lt;/p&gt;
&lt;p&gt;當然，可能有些執行後就會報錯：「&amp;lsquo;java&amp;rsquo; 不是內部或外部命令，也不是可執行的程式或批次處理檔案。」
這是因為沒有安裝Java環境或未配置環境變數導致的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安裝JDK&lt;/strong&gt;
首先先來回顧下安裝JDK的過程&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下載JDK並安裝&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;JDK1.6、1.7、1.8任君選擇下載，想用哪個直接下載哪個吧
官方網站下載JDK &lt;a href=&#34;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html&#34;&gt;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html&lt;/a&gt;
安裝很簡單，無腦下一步操作就行了，這裡不再贅述&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;配置JDK環境變數&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;（1）右擊電腦中的「我的電腦」，Win10為「這台電腦」，選擇「屬性」，選擇「進階系統設定」，在新介面中選擇「環境變數」，我們只編輯「系統變數」就可以了
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gdz8ohzbxnj30y10hz435.jpg&#34;&gt;
（2） 點擊「新建」添加變數名為「JAVA_HOME」，變數值為「C:\Program Files\Java\jdk1.8.0_60」，這個值就是你安裝的JDK路徑，你安裝到了哪裡，就用那個地址就行
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gdz8ozylg5j30m20lldi6.jpg&#34;&gt;再新建一個變數名為「CLASSPATH」，變數值為「.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar」的變數，並確定保存，注意值內的「.;」不要漏掉，每一個符號都不能少&lt;/p&gt;
&lt;p&gt;最關鍵的一步來了，找找有沒有叫「path」的變數，大小寫都行，沒有則新建，有則直接點擊「編輯」
如果已經有path這個變數了，那麼裡面一定保存了一些內容，我們不管它，為了更方便編輯，我們把其中的變數值先複製出來&lt;/p&gt;
&lt;p&gt;然後將內容貼上到文字編輯器中，在內容的最前面添加內容「%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;」，結果如下
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gdz8py2u6ij30tm0jl77z.jpg&#34;&gt;
然後再把整個值複製後貼上到之前編輯的變數值中，確定保存。&lt;/p&gt;
&lt;p&gt;回顧一下上面的步驟，其中總共添加了三個值：
JAVA_HOME：C:\Program Files\Java\jdk1.8.0_60
CLASSPATH：.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar
PATH：%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;&lt;/p&gt;
&lt;p&gt;下面是驗證安裝是否成功&lt;/p&gt;
&lt;p&gt;Win+R打開「執行」，輸入cmd後打開命令列
輸入「java」，正常會顯示一大堆的操作提示
輸入「java -version」，正常會顯示你安裝的java版本號資訊
輸入「javac」，正常會顯示javac的一些用法&lt;/p&gt;
&lt;p&gt;完結撒花！&lt;/p&gt;</description>
    </item>
    <item>
      <title>支付寶當面付對接</title>
      <link>https://en.moejue.cn/zh-hant/posts/107/</link>
      <pubDate>Sat, 04 Apr 2020 02:35:18 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/107/</guid>
      <description>&lt;p&gt;當面付顧名思義，面對面付款，幫助商家在線下消費場景下實現快速收款；當面付產品支援條碼支付和掃碼支付兩種付款方式。
我們這裡對接的就是掃碼支付
掃碼支付，指用戶打開支付寶錢包中的「掃一掃」功能，掃描商家展示在某收銀場景下的二維碼並進行支付的模式。該模式適用於線下實體店支付、面對面支付等場景。業務流程如下圖所示：
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gciwmfk760j30kf071dfz.jpg&#34;&gt;
由於當面付的簽約非常簡單，允許個體工商戶/個人商戶簽約。所以該方式也被大量用於線上的掃碼支付，由於該方式違反了支付寶的相關條款，有一定風險，咱作為技術交流，暫且先拋開這個問題。&lt;/p&gt;
&lt;p&gt;作為技術對接，即使你沒有簽約當面付產品，也是可以進行開發的。
支付能力直接涉及到交易與資金，為了方便開放者調試支付能力，開放平台已經準備好沙箱環境，包括沙箱環境帳號和沙箱版支付寶錢包，這樣開發者就可以在沙箱環境調試了。點擊了解&lt;a href=&#34;https://docs.open.alipay.com/200/105311&#34;&gt;如何接入沙箱&lt;/a&gt;並&lt;a href=&#34;https://openhome.alipay.com/platform/appDaily.htm&#34;&gt;接入沙箱環境&lt;/a&gt;。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gciwn0aa2ej30sq0ptwi3.jpg&#34;&gt;
所以我這邊開發使用的是沙箱環境，畢竟裡面好多錢，隨便用。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gciwlx66oxj30cn0qo0tj.jpg&#34;&gt;
首先先下載相應的開發語言的sdk 下載：https://docs.open.alipay.com/194/105201/
掃碼支付文檔：https://docs.open.alipay.com/194/106078/&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置密鑰&lt;/strong&gt;
為了保證交易雙方（商戶和支付寶）的身份和數據安全，開發者在調用接口前，需要配置雙方密鑰，對交易數據進行雙方校驗。
下載&lt;a href=&#34;https://docs.open.alipay.com/291/105971&#34;&gt;支付寶開放平台開發助手&lt;/a&gt;進行密鑰生成。
生成密鑰後，開發者需要在開放平台開發者中心進行密鑰配置，配置完成後可以獲取支付寶公鑰
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gciwnhq0ztj30u00lo0y6.jpg&#34;&gt;
&lt;strong&gt;設計接入&lt;/strong&gt;
由於我這邊的設計不需要用到輪詢(後面會說)，所以沒有加上
以下是我業務中的相關代碼&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;pay&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;()&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;isPost&lt;/span&gt;()) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// (必填) 商户网站订单系统中唯一订单号，64个字符以内，只能包含字母、数字、下划线，
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 需保证商户系统端不能重复，建议通过数据库sequence生成，
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $uid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Session&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sq.uid&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $outTradeNo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;order\_num&lt;/span&gt;() &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; $uid;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// (必填) 订单标题，粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $subject &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;聚合平台用户积分充值&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// (必填) 订单总金额，单位为元，不能超过1亿元
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $totalAmount &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;post.pay\_money/f&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;($totalAmount &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msg&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;最低充值金額1元&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;($totalAmount &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;9999999&lt;/span&gt;){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msg&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;充值最大金額不能超過9999999元&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// (不推荐使用) 订单可打折金额，可以配合商家平台配置折扣活动，如果订单部分商品参与打折，可以将部分商品总价填写至此字段，默认全部商品可打折
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;//String discountableAmount = &amp;#34;1.00&amp;#34;; //
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// (可选) 订单不可打折金额，可以配合商家平台配置折扣活动，如果酒水不参与打折，则将对应金额填写至此字段
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $undiscountableAmount = &amp;#34;0.01&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 卖家支付宝账号ID，用于支持一个签约账号下支持打款到不同的收款账号，(打款到sellerId对应的支付宝账号)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 如果该字段为空，则默认为与支付宝签约的商户的PID，也就是appid对应的PID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;//$sellerId = &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 订单描述，可以对交易或商品进行一个详细地描述，比如填写&amp;#34;购买商品2件共15.00元&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $body &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;聚合平台用戶積分儲值&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; $totalAmount &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;元&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;//商户操作员编号，添加此参数可以为商户操作员做销售统计
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $operatorId = &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// (可选) 商户门店编号，通过门店号和商家后台可以配置精准到门店的折扣信息，详询支付宝技术支持
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $storeId = &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 支付宝的店铺编号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $alipayStoreId= &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 业务扩展参数，目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法)，系统商开发使用,详情请咨询支付宝技术支持
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $providerId = &amp;#34;&amp;#34;; //系统商pid,作为系统商返佣数据提取的依据
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $extendParams = new ExtendParams();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $extendParams-&amp;gt;setSysServiceProviderId($providerId);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $extendParamsArr = $extendParams-&amp;gt;getExtendParams();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 支付超时，线下扫码交易定义为5分钟
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $timeExpress &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 商品明细列表，需填写购买商品详细信息，
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goodsDetailList = array();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// // 创建一个商品信息，参数含义分别为商品id（使用国标）、名称、单价（单位为分）、数量，如果需要添加商品类别，详见GoodsDetail
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods1 = new GoodsDetail();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods1-&amp;gt;setGoodsId(&amp;#34;apple-01&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods1-&amp;gt;setGoodsName(&amp;#34;iphone&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods1-&amp;gt;setPrice(3000);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods1-&amp;gt;setQuantity(1);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// //得到商品1明细数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods1Arr = $goods1-&amp;gt;getGoodsDetail();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// // 继续创建并添加第一条商品信息，用户购买的产品为“xx牙刷”，单价为5.05元，购买了两件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods2 = new GoodsDetail();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods2-&amp;gt;setGoodsId(&amp;#34;apple-02&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods2-&amp;gt;setGoodsName(&amp;#34;ipad&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods2-&amp;gt;setPrice(1000);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods2-&amp;gt;setQuantity(1);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// //得到商品1明细数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goods2Arr = $goods2-&amp;gt;getGoodsDetail();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $goodsDetailList = array($goods1Arr,$goods2Arr);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;//第三方应用授权令牌,商户授权系统商开发模式下使用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $appAuthToken &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;;&lt;span style=&#34;color:#75715e&#34;&gt;//根据真实值填写
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 创建请求builder，设置请求参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            $qrPayRequestBuilder &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;AlipayTradePrecreateContentBuilder&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayRequestBuilder&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setOutTradeNo&lt;/span&gt;($outTradeNo);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayRequestBuilder&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setTotalAmount&lt;/span&gt;($totalAmount);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayRequestBuilder&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeExpress&lt;/span&gt;($timeExpress);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayRequestBuilder&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setSubject&lt;/span&gt;($subject);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayRequestBuilder&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setBody&lt;/span&gt;($body);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $qrPayRequestBuilder-&amp;gt;setUndiscountableAmount($undiscountableAmount);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $qrPayRequestBuilder-&amp;gt;setExtendParams($extendParamsArr);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $qrPayRequestBuilder-&amp;gt;setGoodsDetailList($goodsDetailList);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $qrPayRequestBuilder-&amp;gt;setStoreId($storeId);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $qrPayRequestBuilder-&amp;gt;setOperatorId($operatorId);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// $qrPayRequestBuilder-&amp;gt;setAlipayStoreId($alipayStoreId);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayRequestBuilder&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setAppAuthToken&lt;/span&gt;($appAuthToken);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 调用qrPay方法获取当面付应答
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ROOT\_PATH&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;extend/f2fpay/config/config.php&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPay &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;AlipayTradeService&lt;/span&gt;($config);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $qrPayResult &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $qrPay&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;qrPay&lt;/span&gt;($qrPayRequestBuilder);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;//  根据状态值进行业务处理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;switch&lt;/span&gt; ($qrPayResult&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getTradeStatus&lt;/span&gt;()){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SUCCESS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    $response &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $qrPayResult&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getResponse&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;Db&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;order&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;insert&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;uid&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $uid,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pay\_id&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $outTradeNo,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;money&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $totalAmount,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;creat\_time&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;time&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;subject&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $subject
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msg&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;支付寶創建訂單二維碼成功!!!&amp;#34;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;qr\_code&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $response&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;qr\_code&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;outTradeNo&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; $outTradeNo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;]&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// $qrcode = $qrPay-&amp;gt;create\_erweima($response-&amp;gt;qr\_code);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// echo $qrcode;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// print\_r($response);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;FAILED&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msg&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;支付寶創建訂單二維碼失敗!!!&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// if(!empty($qrPayResult-&amp;gt;getResponse())){
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;//     print\_r($qrPayResult-&amp;gt;getResponse());
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UNKNOWN&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msg&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;系統異常，狀態未知!!!&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// echo &amp;#34;系統異常，狀態未知!!!&amp;#34;.&amp;#34;&amp;lt;br&amp;gt;--------------------------&amp;lt;br&amp;gt;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// if(!empty($qrPayResult-&amp;gt;getResponse())){
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;//     print\_r($qrPayResult-&amp;gt;getResponse());
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;// }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msg&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;不支持的返回狀態，創建訂單二維碼返回異常!!!&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;\&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; ;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上就是當面付預下單代碼
關於這個SDK，我非常有必要吐槽一下，哪個傢伙寫的demo，還在PHP例子裡引入了個lotusphp框架，一大堆沒有用的東西，完全沒有考慮我們開發者能不能接受得了。
我也是花了一點時間，把SDK給精簡了一下，只拿出我需要的部分，放入了我自己的框架中，加上了namespace，自動載入。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gciwodh05dj30af0egdho.jpg&#34;&gt;
掃碼支付有一個獨有的功能&amp;mdash;-異步通知
這個也正是線上支付最為需要的功能
當收銀台調用預下單請求 API 生成二維碼展示給用戶後，用戶通過手機掃描二維碼進行支付，支付寶會將該筆訂單的變更信息，沿著商戶調用預下單請求時所傳入的異步通知地址 notify_url，通過 POST 請求的形式將支付結果作為參數通知到商戶系統。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gciwouog84j30o10cu768.jpg&#34;&gt;
記住這個異步通知地址需要在應用那設置一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Discuz! 論壇個人空間自訂 CSS 樣式</title>
      <link>https://en.moejue.cn/zh-hant/posts/109/</link>
      <pubDate>Tue, 24 Mar 2020 13:23:51 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/109/</guid>
      <description>&lt;p&gt;幾天前閒來無事，然後就去找了一下Discuz論壇的漏洞，然後還真就找到了，順便就寫成了個軟體，再就順勢水了一篇。
下面這是事件起因
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd4tebhwgwj309s0aojss.jpg&#34;&gt;
這個漏洞對網站並沒有太大的危害，僅只能自定義個人空間的CSS樣式，對網站數據並不構成威脅，還請放心。&lt;/p&gt;
&lt;p&gt;軟體效果即可以自定義Discuz個人空間的裝扮的CSS樣式，豐富美化個人空間，讓其不再單調。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;測試Discuz版本X3.4，其他版本請自行測試。&lt;/li&gt;
&lt;li&gt;僅測試了全球主機交流論壇(站長求放過)，同版本Discuz理論上通用&lt;/li&gt;
&lt;li&gt;未開通個人空間的論壇不可用&lt;/li&gt;
&lt;li&gt;自定義CSS不建議過多且建議壓縮成一行，以免導致失敗&lt;/li&gt;
&lt;li&gt;協議頭正常情況下，理論上可以不用修改，放置文本框主要是為了方便擴展&lt;/li&gt;
&lt;li&gt;如果操作的是loc論壇，默認會關注並添加阿珏醬為好友 [#手動滑稽 + 狗頭保命]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本軟體僅本地請求，不將任何數據上傳到伺服器。
軟體有加殼，防毒軟體可能誤報，還請放心使用&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd46ipbb1uj30jl0drac8.jpg&#34;&gt;
&lt;strong&gt;獲取Cookie&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;瀏覽器打開開發人員工具(F12)，進入目標網站，在登入狀態下的任何頁面即可。開發人員工具切換到Network選項欄，重新整理頁面(F5)，找到並點擊當前網域的請求數據的Headers欄，Request Headers處的Cookie。我知道大家肯定聽不懂我在說什麼，所以我特意做了圖。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd47v5klf2j30iq0hhjw1.jpg&#34;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;第二種方法操作更簡單快捷，但是這種方法適用於你知道自己想要的Cookie是哪一個。如下圖所示。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd47uobcsaj30nj0ammz9.jpg&#34;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;第一種方法中的開發人員工具在早期的部落格文章中也有使用過，但沒有講到如何獲取Cookie。推薦還是第一種，Cookie反正不怕多，但少了就不行了。
&lt;strong&gt;免責聲明&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;本軟體僅供學習交流使用！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本軟體作者不承擔任何責任！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用本軟體即視為同意本條款！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;下載&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;下面這個下載樣式已經好幾年沒用過了，今天終於重出江湖了。
&lt;code&gt;.down_link{background:url(&#39;https://www.52ecy.cn/content/uploadfile/201707/md-bg.jpeg&#39;) no-repeat 100% 0% #fffdff; border: 1px solid #faf8fb; border-radius: 2px; color: #666; font-size: 14px; margin-bottom: 10px; padding: 5px 20px;}.downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: &amp;quot;Open Sans&amp;quot;,&amp;quot;Hiragino Sans GB&amp;quot;,&amp;quot;Microsoft YaHei&amp;quot;,&amp;quot;WenQuanYi Micro Hei&amp;quot;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downlink a{text-decoration:none;} .downlink a{text-decoration:none;font-size:15px;} .downlink a:link{color: #ffffff;} .downlink a:visited{color: #ffffff;} .downlink a:hover{color: #ffffff;} .downlink a:active{color: #ffffff;} .downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF !important; cursor: pointer; font-family: &amp;quot;Open Sans&amp;quot;,&amp;quot;Hiragino Sans GB&amp;quot;,&amp;quot;Microsoft YaHei&amp;quot;,&amp;quot;WenQuanYi Micro Hei&amp;quot;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .yanshibtn{background: none repeat scroll 0 0 #d33431; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: &amp;quot;Open Sans&amp;quot;,&amp;quot;Hiragino Sans GB&amp;quot;,&amp;quot;Microsoft YaHei&amp;quot;,&amp;quot;WenQuanYi Micro Hei&amp;quot;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downbtn:hover,.yanshibtn:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: &amp;quot;Open Sans&amp;quot;,&amp;quot;Hiragino Sans GB&amp;quot;,&amp;quot;Microsoft YaHei&amp;quot;,&amp;quot;WenQuanYi Micro Hei&amp;quot;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .downbtn a:hover,.yanshibtn a:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: &amp;quot;Open Sans&amp;quot;,&amp;quot;Hiragino Sans GB&amp;quot;,&amp;quot;Microsoft YaHei&amp;quot;,&amp;quot;WenQuanYi Micro Hei&amp;quot;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;}&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何優雅地提交一個表單</title>
      <link>https://en.moejue.cn/zh-hant/posts/91/</link>
      <pubDate>Mon, 06 May 2019 07:28:33 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/91/</guid>
      <description>&lt;p&gt;這是一個非常基礎的HTML表單提交問題，但卻是一個非常實用的技巧
我的業務場景是這樣的：
一個可動態建立input的表單，如下圖
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1v9kcon30j30l007bdgd.jpg&#34;&gt;
這意味著input的name不能是一個固定的，否則肯定會被覆蓋掉的&lt;/p&gt;
&lt;p&gt;第一種，傳統的普通提交方式，給每一個要提交的input一個唯一的name&lt;/p&gt;
&lt;form id=&#34;form1&#34; action=&#34;./index.php&#34; method=&#34;get&#34;&gt;
    &lt;div class=&#34;form-control&#34;&gt;
        &lt;input type=&#34;text&#34; name=&#34;name1&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;num1&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;img1&#34; /&gt;
    &lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&#34;form-control&#34;&gt;
        &lt;input type=&#34;text&#34; name=&#34;name2&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;num2&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;img2&#34; /&gt;
    &lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&#34;form-control&#34;&gt;
        &lt;input type=&#34;text&#34; name=&#34;name3&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;num3&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;img3&#34; /&gt;
    &lt;/div&gt;
    ......
  &lt;input type=&#34;submit&#34; value=&#34;Submit&#34; /&gt;
&lt;/form&gt;
&lt;p&gt;瀏覽器提交抓到的格式是這樣子的
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1va4e7vtmj30bx04zdg1.jpg&#34;&gt;
伺服器獲取列印出來的是這樣的，對後端的資料處理就非常不友善&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1va3y1ep2j309805i0sk.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;第二種，陣列的方式進行表單提交&lt;/p&gt;
&lt;form id=&#34;form1&#34; action=&#34;./index.php&#34; method=&#34;get&#34;&gt;
    &lt;div class=&#34;form-control&#34;&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[1\]\[name\]&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[1\]\[num\]&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[1\]\[img\]&#34; /&gt;
    &lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&#34;form-control&#34;&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[2\]\[name\]&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[2\]\[num\]&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[2\]\[img\]&#34; /&gt;
    &lt;/div&gt;
    &lt;br&gt;
    &lt;div class=&#34;form-control&#34;&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[3\]\[name\]&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[3\]\[num\]&#34; /&gt;
        &lt;input type=&#34;text&#34; name=&#34;infos\[3\]\[img\]&#34; /&gt;
    &lt;/div&gt;
    ......
  &lt;input type=&#34;submit&#34; value=&#34;Submit&#34; /&gt;
&lt;/form&gt;
&lt;p&gt;瀏覽器和後端列印的結果分別為
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1va7ioy7qj30cg0c3q2s.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1va7js1u3j30bd04v74j.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;細心觀察就會發現，提交的name值發生了變化，變成了一樣的？陣列？
提交到後端就會發現資料比之前整齊多了
但這裡要注意的是，提交的陣列鍵中不需要使用引號，否則引號也會成為鍵的一部分&lt;/p&gt;
&lt;p&gt;當然了，實際中還可能遇到這樣的問題，要提交的組數（像上面的1、2、3）是不確定的，可以在前端隨意地添加，這個時候怎麼去用陣列提交這些內容呢？
下面就是我業務中的實際解決方案&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1v9o6jon8j316g0fwwh3.jpg&#34;&gt;
這樣的話，二維陣列的鍵則不需要我們自己去維護了，由瀏覽器幫我們自動生成
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1v9o5uhnuj30a109igli.jpg&#34;&gt;
後端接收到的資料則變成了這樣子，變得非常好處理了
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1vaez0ltqj30730bya9y.jpg&#34;&gt;
此方法適用於，要提交一堆不確定個數的一組相關的資料對
完結撒花！~&lt;/p&gt;</description>
    </item>
    <item>
      <title>微信JSAPI支付</title>
      <link>https://en.moejue.cn/zh-hant/posts/89/</link>
      <pubDate>Sat, 30 Mar 2019 09:30:21 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/89/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1l3k211blj30ia04x74e.jpg&#34;&gt; 前陣子一直在做微信相關的業務，雖說不是什麼新技術，但之前一直沒有機會接觸到，然後踩了些坑，抽空整理記錄下。
微信支付一共分為7種，分別是：付款碼支付、JSAPI支付、Native支付、APP支付、H5支付、小程序支付、人臉支付。
此次業務中使用到的是微信JSAPI支付：用戶透過微信掃碼、關注公眾號等方式進入商家H5頁面，並在&lt;strong&gt;微信內&lt;/strong&gt;呼叫 JSSDK完成支付&lt;/p&gt;
&lt;p&gt;文件：&lt;a href=&#34;https://pay.weixin.qq.com/wiki/doc/api/index.html&#34;&gt;https://pay.weixin.qq.com/wiki/doc/api/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SDK：[https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1&lt;/p&gt;
&lt;p&gt;](&lt;a href=&#34;https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1%29JSAPI&#34;&gt;https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1)JSAPI&lt;/a&gt;支付需要在微信中的瀏覽器打開才能喚起微信支付，效果如下圖
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g1l36yn1sej30p91hc40b.jpg&#34;&gt;
附上介面程式碼
程式碼中使用了模板引擎
html：&lt;/p&gt;
&lt;div class=&#34;am-modal-bd&#34;&gt;
	&lt;img src=&#34;{$competition\[&#39;avatar&#39;\]}&#34; alt=&#34;&#34;&gt;&lt;br&gt;
	&lt;span style=&#34;font-size: 13px;color: #72c6ef&#34;&gt;{$competition\[&#39;username&#39;\]}&lt;/span&gt;&lt;br&gt;
	&lt;span id=&#34;tips&#34; style=&#34;font-size: 13px&#34;&gt;&lt;/span&gt;
  &lt;ul class=&#34;ul\_box&#34;&gt;
	&lt;li&gt;
		&lt;div&gt;&lt;/div&gt;
		&lt;div class=&#34;label\_box&#34;&gt;
			&lt;label&gt;
				&lt;input type=&#34;radio&#34; name=&#34;price&#34; value=&#34;{$prices\[0\]}&#34; checked=&#34;&#34;&gt;
				&lt;div class=&#34;active&#34;&gt;&lt;span class=&#34;am-icon-diamond&#34;&gt;&lt;/span&gt; {$prices\[0\]}鑽&lt;/div&gt;
			&lt;/label&gt;
			&lt;label&gt;
				&lt;input type=&#34;radio&#34; name=&#34;price&#34; value=&#34;{$prices\[1\]}&#34;&gt;
				&lt;div&gt;&lt;span class=&#34;am-icon-diamond&#34;&gt;&lt;/span&gt; {$prices\[1\]}鑽&lt;/div&gt;
			&lt;/label&gt;
			&lt;label&gt;
				&lt;input type=&#34;radio&#34; name=&#34;price&#34; value=&#34;{$prices\[2\]}&#34;&gt;
				&lt;div&gt;&lt;span class=&#34;am-icon-diamond&#34;&gt;&lt;/span&gt; {$prices\[2\]}鑽&lt;/div&gt;
			&lt;/label&gt;
		&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;div&gt;&lt;/div&gt;
		&lt;div class=&#34;label\_box&#34;&gt;
			&lt;label&gt;
				&lt;input type=&#34;radio&#34; name=&#34;price&#34; value=&#34;{$prices\[3\]}&#34;&gt;
				&lt;div&gt;&lt;span class=&#34;am-icon-diamond&#34;&gt;&lt;/span&gt; {$prices\[3\]}鑽&lt;/div&gt;
			&lt;/label&gt;
			&lt;label&gt;
				&lt;input type=&#34;radio&#34; name=&#34;price&#34; value=&#34;{$prices\[4\]}&#34;&gt;
				&lt;div&gt;&lt;span class=&#34;am-icon-diamond&#34;&gt;&lt;/span&gt; {$prices\[4\]}鑽&lt;/div&gt;
			&lt;/label&gt;
			&lt;label&gt;
				&lt;input type=&#34;number&#34; name=&#34;price&#34; id=&#34;price&#34; class=&#34;input&#34; placeholder=&#34;自定義&#34;&gt;
			&lt;/label&gt;
		&lt;/div&gt;
	&lt;/li&gt;
  &lt;/ul&gt;
  &lt;span style=&#34;font-size: 13px&#34;&gt;註：1鑽=1元，1鑽={$activity\[&#39;offset&#39;\]}票&lt;/span&gt;&lt;br&gt;
  &lt;button type=&#34;button&#34; class=&#34;am-btn am-btn-primary  am-radius&#34; onclick=&#34;callpay()&#34; style=&#34;margin-top: 5px;&#34;&gt;立即微信支付&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;JavaScript：&lt;/p&gt;
&lt;p&gt;// 投票
var offset = {$activity[&amp;lsquo;offset&amp;rsquo;]};
$(&amp;rsquo;#tips&amp;rsquo;).html(&amp;lsquo;正在給{$competition[&amp;lsquo;code&amp;rsquo;]}號贈送{$prices[0]}鑽=&amp;rsquo;+({$prices[0]}*offset)+&amp;lsquo;票&amp;rsquo;);
$(&amp;rsquo;#vote&amp;rsquo;).click(function(){
$.post(&amp;rsquo;/index/index/detailed.html?cid={$cid}&amp;amp;aid={$aid}&amp;rsquo;,{
formhash :&amp;rsquo;{FORMHASH}&amp;rsquo;,
submit:&amp;lsquo;1&amp;rsquo;,
type:1,
openid:&amp;rsquo;{$_G[&amp;lsquo;member&amp;rsquo;][&amp;lsquo;openid&amp;rsquo;]}&amp;rsquo;
},function(res){
alert(res.msg);
if (res.code == 0) {
$(&amp;rsquo;.box-1 span&amp;rsquo;).text(res.data.all);
$(&amp;rsquo;.box-2 span&amp;rsquo;).text(res.data.rank);
$(&amp;rsquo;.box-3 span&amp;rsquo;).text(res.data.up + &amp;lsquo;票&amp;rsquo;);
}
});
})
/* jQuery物件級別外掛程式擴展 */
$.fn.extend({
/* 單選框 */
hlRadio:function () {
var radioEl=$(this);
radioEl.click(function () {
var price = 0;
price = $(&amp;lsquo;input:radio:checked&amp;rsquo;).val();
$(&amp;rsquo;#price&amp;rsquo;).val(&amp;rsquo;&amp;rsquo;);
$(&amp;rsquo;#tips&amp;rsquo;).html(&amp;lsquo;正在給{$competition[&amp;lsquo;code&amp;rsquo;]}號贈送&amp;rsquo;+price+&amp;lsquo;鑽=&amp;rsquo;+(price*offset)+&amp;lsquo;票&amp;rsquo;);
radioEl.siblings(&amp;ldquo;div&amp;rdquo;).removeClass(&amp;ldquo;active&amp;rdquo;);
$(this).siblings(&amp;ldquo;div&amp;rdquo;).addClass(&amp;ldquo;active&amp;rdquo;);
});
},
});
$(&amp;ldquo;input[name=&amp;lsquo;price&amp;rsquo;]&amp;rdquo;).hlRadio();
$(&amp;rsquo;#price&amp;rsquo;).bind(&amp;lsquo;input propertychange&amp;rsquo;, function(){
var price = 0;
price = $(&amp;rsquo;#price&amp;rsquo;).val();
$(&amp;rsquo;#tips&amp;rsquo;).html(&amp;lsquo;正在給{$competition[&amp;lsquo;code&amp;rsquo;]}號贈送&amp;rsquo;+price+&amp;lsquo;鑽=&amp;rsquo;+(price*offset)+&amp;lsquo;票&amp;rsquo;);
})&lt;/p&gt;</description>
    </item>
    <item>
      <title>[筆記]Git常用命令大全</title>
      <link>https://en.moejue.cn/zh-hant/posts/57/</link>
      <pubDate>Sat, 16 Jun 2018 08:56:21 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/57/</guid>
      <description>&lt;p&gt;繼上一次之後，我抽空整理了一份比較完整的 Git 常用命令清單，並找到了一張非常棒、非常高清的導圖（1759*3162）。&lt;/p&gt;
&lt;p&gt;查看、新增、提交、刪除、找回、重置修改檔案&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git help &amp;lt;command&amp;gt; # 顯示 command 的說明&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git show # 顯示某次提交的內容 git show $id&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git co -- &amp;lt;file&amp;gt; # 捨棄工作區修改&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git co . # 捨棄工作區修改&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git add &amp;lt;file&amp;gt; # 將工作檔案修改提交到本地暫存區&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git add . # 將所有修改過的工作檔案提交暫存區&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git rm &amp;lt;file&amp;gt; # 從版本庫中刪除檔案&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git rm &amp;lt;file&amp;gt; --cached # 從版本庫中刪除檔案，但不刪除檔案&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git reset &amp;lt;file&amp;gt; # 從暫存區恢復到工作檔案&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git reset -- . # 從暫存區恢復到工作檔案&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git reset --hard # 恢復最近一次提交過的狀態，即放棄上次提交後的所有本次修改&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git ci &amp;lt;file&amp;gt; git ci . git ci -a # 將 git add, git rm 和 git ci 等操作都合併在一起執行 git ci -am &amp;quot;some comments&amp;quot;&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>網頁抓包之我的歌單</title>
      <link>https://en.moejue.cn/zh-hant/posts/31/</link>
      <pubDate>Tue, 05 Jun 2018 11:04:05 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/31/</guid>
      <description>&lt;p&gt;最近看到不少人部落格都發了關於網頁抓包的教學，然後也激起了我的興(zhuang)趣(bi)，就誕生了這篇文章
也剛好前段時間，&lt;a href=&#34;https://music.52ecy.cn/&#34;&gt;我的歌單&lt;/a&gt;對接酷狗的API失效了，趁機修復一下，順便寫個圖文教學。那麼就拿酷狗「開刀」
關於抓包的概念&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;抓包（packet capture）就是將網路傳輸發送與接收的資料包進行截獲、重發、編輯、轉存等操作，也用來檢查網路安全。抓包也經常被用來進行資料截取等。&lt;/p&gt;
&lt;p&gt;——來自基佬百科&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我們這裡講的是對網頁傳輸的資料進行截取，並不涉及重發、編輯等影響網路安全的操作。
其實關於&lt;a href=&#34;https://www.52ecy.cn/tag/%E6%8A%93%E5%8C%85&#34;&gt;抓包&lt;/a&gt;的文章，我早在16年的時候就已經發布了多篇，但是由於文章年久失修，圖片有的丟失，有的損壞，順序也全亂了。
抓包對於做WEB開發的人來說，可能會比較陌生，尤其是後端，但我是做桌面應用程式出身的，使用起來就得心應手。
目的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;解析酷狗歌曲直鏈 - 修復我的歌單&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;目標網站：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://t.kugou.com/1md5hf5t8V2&#34;&gt;http://t.kugou.com/1md5hf5t8V2&lt;/a&gt; 酷狗我的歌單分享短網址&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;使用工具：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Google Chrome F12（或 Ctrl + Shift + I、或直接 點擊右鍵&amp;gt;檢查元素）開發人員工具&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;（注意以下教學請結合圖片觀看，看不清楚的請右鍵新視窗開啟圖片）
然後我這裡抓的是手機版頁面，因為電腦版整個歌單的列表是直接返回到原始碼中，不方便我們解析。手機版則是返回JSON。
Preserve Log：作用是在頁面跳轉後保留之前的日誌
左上角的手機標誌：切換當前瀏覽介面的UA為手機UA
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iyxmmr1j30nz0fl0u2.jpg&#34;&gt;
輸入網址後按Enter鍵訪問，網頁發生跳轉
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iybcesaj314p0arn2j.jpg&#34;&gt;
狀態碼302，得到重定向位址（務必看圖片，文字描述被精簡）
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iyb1qhdj30w00amjt6.jpg&#34;&gt;
抓包就到此結束，下面開始分析：
可以確定的是酷狗網站的音樂連結絕對不是固定的
以以往的經驗來說，這都是可疑參數
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0j14h87ij30qr0bdmya.jpg&#34;&gt;
在抓包日誌中尋尋覓覓，得到整個歌單列表的獲取方法 &lt;code&gt;list&lt;/code&gt;。並且包含歌曲的基礎資訊。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iybbzb2j312a0e8afo.jpg&#34;&gt;
分析 &lt;code&gt;list&lt;/code&gt; 連結，就很明顯，這裡的參數和之前的很像
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iyb4b7bj30q50adwel.jpg&#34;&gt;
接下來就是分析每一首歌曲的連結
歌曲直鏈的有效期差不多為24小時左右，就會失效了
繼續查看抓包日誌
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iyc2p8aj314a0ecn23.jpg&#34;&gt;
帶上歌曲的hash值即可獲取到歌曲的相關資訊和直鏈（hash值在前邊的歌曲列表中已經返回了）
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fs0iza7xskj30mg06h3yi.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;總結：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;短網址 -&amp;gt; 網頁連結參數 -&amp;gt; 獲取歌單列表 -&amp;gt; 獲取歌曲 （循序漸進，把上一步得到的參數帶上訪問下一個網址）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;相關的程式碼自己去寫吧&amp;hellip;.-。-
很久沒發這種很教學性的文章了。
最後說一句，Google 開發人員工具真特喵好用！
隨便寫寫，溜~~&lt;/p&gt;
&lt;p&gt;相關推薦
（1）&lt;a href=&#34;https://mkblog.cn/492/&#34;&gt;使用PHP抓取Bing每日圖像並為己所用&lt;/a&gt;.孟坤部落格.
（2）&lt;a href=&#34;https://mkblog.cn/1273&#34;&gt;抓包入門（一）&lt;/a&gt;
相關程式碼
（1）&lt;a href=&#34;https://www.youngxj.cn/507.html&#34;&gt;酷狗歌單獲取歌曲資訊的介面原始碼&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CSS3 隨機背景圖片切換特效</title>
      <link>https://en.moejue.cn/zh-hant/posts/4/</link>
      <pubDate>Wed, 16 May 2018 11:58:08 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/4/</guid>
      <description>&lt;p&gt;CSS3 隨機背景圖片淡入淡出切換特效 演示效果如本篇文章背景所示
看大家扒我的幻想領域二次元限定版扒得比較累，扒了大半個小時的，抽空整理一下發出來
設計之初本來是打算使用 jQuery 進行實現的，但是注意到了 CSS3 的 &lt;code&gt;@keyframes&lt;/code&gt; 規則，CSS3 已經強大到曾經只有 JS 才能實現的效果&lt;/p&gt;
&lt;h2 id=&#34;定義和用法&#34;&gt;定義和用法&lt;/h2&gt;
&lt;p&gt;透過 &lt;code&gt;@keyframes&lt;/code&gt; 規則，您能夠建立動畫。&lt;/p&gt;
&lt;p&gt;建立動畫的原理是，將一套 CSS 樣式逐漸變化為另一套樣式。&lt;/p&gt;
&lt;p&gt;在動畫過程中，您能夠多次改變這套 CSS 樣式。&lt;/p&gt;
&lt;p&gt;以百分比來規定改變發生的時間，或者透過關鍵詞 &amp;ldquo;from&amp;rdquo; 和 &amp;ldquo;to&amp;rdquo;，等價於 0% 和 100%。&lt;/p&gt;
&lt;p&gt;0% 是動畫的開始時間，100% 是動畫的結束時間。&lt;/p&gt;
&lt;p&gt;為了獲得最佳的瀏覽器支援，您應該始終定義 0% 和 100% 選擇器。&lt;/p&gt;
&lt;p&gt;註釋：請使用動畫屬性來控制動畫的外觀，同時將動畫與選擇器綁定。&lt;/p&gt;
&lt;p&gt;核心 CSS 部分 (記得切換圖片地址)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-attachment&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;fixed&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;word-wrap&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;break-word&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;background-size&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;cover&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;background-size&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;cover&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-size&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;cover&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-repeat&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;no-repeat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;list-style&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;https://random.52ecy.cn/randbg.php?v=1520341099&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;https://random.52ecy.cn/randbg.php?v=1520341159&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;https://random.52ecy.cn/randbg.php?v=1520341149&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;https://random.52ecy.cn/randbg.php?v=1520341139&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;https://random.52ecy.cn/randbg.php?v=1520341129&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;https://random.52ecy.cn/randbg.php?v=1520341119&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;after&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;fixed&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;z-index&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;after&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;content&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;transparent&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-size&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;cover&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-position&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;background-repeat&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;z-index&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;-2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;backface-visibility&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;hidden&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: imageAnimation &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;linear&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;infinite&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: imageAnimation &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;linear&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;infinite&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-o-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: imageAnimation &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;linear&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;infinite&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-ms-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: imageAnimation &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;linear&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;infinite&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: imageAnimation &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;linear&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;infinite&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-o-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-ms-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-o-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-ms-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-o-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-ms-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-o-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-ms-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;cb-slideshow&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;nth-child&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-moz-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-o-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;-ms-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-keyframes&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;imageAnimation&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-timing-function&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;ease-in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;transform&lt;/span&gt;: scale(&lt;span style=&#34;color:#ae81ff&#34;&gt;1.05&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;animation-timing-function&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;ease-out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;17&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;transform&lt;/span&gt;: scale(&lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;) rotate(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;25&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;-webkit-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;transform&lt;/span&gt;: scale(&lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;) rotate(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;當然還是需要配合 HTML 程式碼的
HTML 部分 (其中的文字部分和 &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; 的數量是可以隨意更改的)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git簡單的使用步驟</title>
      <link>https://en.moejue.cn/zh-hant/posts/64/</link>
      <pubDate>Tue, 03 Apr 2018 12:04:32 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/64/</guid>
      <description>&lt;p&gt;本文不闡述任何概念性知識，僅僅只是做一個筆記，簡單的使用步驟，如遇障礙，請Google一下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用SSH 完成 Git 與 GitHub 的綁定&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;生成 &lt;code&gt;SSH key&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh-keygen -t rsa
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;指定 RSA 演算法生成金鑰，之後就會生成兩個檔案，分別為id_rsa和id_rsa.pub，即私鑰id_rsa和公鑰id_rsa.pub。對於這兩個檔案&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;添加 SSH key
github.com -&amp;gt; Settings -&amp;gt; SSH and GPG -&amp;gt; New SSH key
將公鑰id_rsa.pub的內容貼到Key處的位置（Titles的內容不填寫也沒關係），然後點擊Add SSH key 即可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;驗證綁定是否成功&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh -T git@github.com
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;把本地專案推送到github的命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(1) 打開你的目錄&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd demo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(2) 初始化版本庫，用於生成git檔案&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(3) 將所有檔案添加到暫存區&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git add *
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(4) 提交目前工作空間的修改內容&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git commit -m &amp;#34;first commit&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(5) 將儲存庫連接到遠端伺服器&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git remote add origin &amp;lt;server&amp;gt;(就是上面你儲存庫的地址)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(6) 將改動推送到所添加的伺服器上&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git push -u origin master
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在推送的時候如果出現如下錯誤：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;warning: redirecting to https://github.com/178146582/dabai.git/
To http://github.com/178146582/dabai.git
 ! [rejected]        master -&amp;gt; master (fetch first)
error: failed to push some refs to &amp;#39;http://github.com/178146582/dabai.git&amp;#39; hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., &amp;#39;git pull ...&amp;#39;) before pushing again.
hint: See the &amp;#39;Note about fast-forwards&amp;#39; in &amp;#39;git push --help&amp;#39; for details.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;查了一下錯誤的原因是github中的README.md檔案不在本地程式碼目錄中。所以我們把上面第六步分成兩步：&lt;/p&gt;</description>
    </item>
    <item>
      <title>各種語言的OEP大全</title>
      <link>https://en.moejue.cn/zh-hant/posts/35/</link>
      <pubDate>Fri, 19 May 2017 03:08:23 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/35/</guid>
      <description>&lt;p&gt;&lt;strong&gt;平時要找 OEP 對照確實比較麻煩，我就整理了一下，直接在本文中查看並認識 OEP，&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;或者右鍵點擊圖片儲存到本機     點擊可查看大圖&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;如果對您有幫助的話，請留言評論一下吧~&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VC6 與易語言&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw5vw6j30f908vmy4.jpg&#34;&gt;&lt;br&gt;
Delphi7&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqi8qwc0kxj30hf08u0u1.jpg&#34;&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VB5&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqi8qw8khaj30f608qjsb.jpg&#34;&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VB6&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw0u4ej30f608qwfd.jpg&#34;&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BC++&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw68tpj30f608qgmc.jpg&#34;&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;**VS2008Debug&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qywq8zj30fx0da3zb.jpg&#34;&gt;&lt;/strong&gt;&lt;br&gt;
**&lt;/p&gt;
&lt;p&gt;**VS2008Release&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qwwnntj30c907et93.jpg&#34;&gt;&lt;/strong&gt;&lt;br&gt;
**&lt;/p&gt;
&lt;p&gt;**VS2012-VS2015Debug&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qxkwfgj30c00cx74x.jpg&#34;&gt;&lt;/strong&gt;&lt;br&gt;
**&lt;/p&gt;
&lt;p&gt;**VS2012-VS2015Release&lt;br&gt;
&lt;strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qx0130j30bf07vdg9.jpg&#34;&gt;&lt;/strong&gt;&lt;br&gt;
**&lt;/p&gt;</description>
    </item>
    <item>
      <title>各種語言按鈕事件特徵碼</title>
      <link>https://en.moejue.cn/zh-hant/posts/34/</link>
      <pubDate>Mon, 15 May 2017 05:31:08 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/34/</guid>
      <description>&lt;p&gt;調試軟體，最重要的就是下斷點，那麼如何下斷點，就是一門重要的技巧&lt;/p&gt;
&lt;p&gt;比如：彈提示框，就下MessageBoxA，註冊表的，就下RegOpenKeyA等等&lt;br&gt;
當然，能直接下到按鈕事件，當然更為方便，因為到了按鈕事件後，很快就會到達核心程式碼，離你的破解也就不遠了&lt;br&gt;
本文就總結一下各類語言找按鈕事件的方法，當然也可以借助工具，如VBexplorer，DEDE，ECE等等&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、VB程式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;其實，VB的按鈕事件的找法是最為普遍的，也就是大家所謂的萬能斷點，其實也不僅僅是針對按鈕事件，還有很多其他的用處，如取消NAG，啟動框，灰色按鈕或隱藏按鈕，啟動時的timer事件等等，具體的就自己去總結吧，這裡只講按鈕事件!&lt;br&gt;
OD載入後，CTRL+B 查找 816C24&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、Delphi和BC++程式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Delphi和BC++都是同一公司開發的，故查找方法都一樣，當然你也可以使用DEDE.&lt;br&gt;
OD載入後，CTRL+G，轉到00401000處&lt;br&gt;
然後就CTRL+B,查找特徵碼740E8BD38B83????????FF93????????&lt;br&gt;
下面的工作就是不斷的CTRL+L繼續查找和F2下斷了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三、易語言&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;易語言的這種查找方法，同樣適合有殼的程式，其他的就必須脫殼後再繼續操作了&lt;br&gt;
OD載入後，就F9運行程式吧，當程式運行後，&lt;br&gt;
然後CTRL+B，查找FF 55 FC 5F 5E&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四、VC++程式(非MFC程式)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OD載入後,單擊滑鼠右鍵，選擇&amp;quot;查找&amp;quot;，然後是&amp;quot;所有命令”&lt;br&gt;
在彈出的輸入框裡，寫入特徵程式碼 sub eax,0a&lt;br&gt;
然後斷下後，F7跟進，F8幾次,就來到按鈕事件了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;五、MFC類程式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;當然判斷MFC和非MFC的程式,靠大家自己去判斷了&lt;br&gt;
運行程式然後就CTRL+F，查找特徵程式碼:sub eax,0a&lt;br&gt;
斷下後F7跟進,F8幾次,就會來到按鈕事件程式碼處了!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;總結類：各種語言按鈕事件特徵碼&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VB：&lt;/strong&gt;&lt;br&gt;
816C24&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Delphi &amp;amp; BC++ ：&lt;/strong&gt;&lt;br&gt;
740E8BD38B83????????FF93????????&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MFC：&lt;/strong&gt;&lt;br&gt;
sub eax,0a&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VC++：&lt;/strong&gt;&lt;br&gt;
sub eax,0a&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;易語言：&lt;/strong&gt;&lt;br&gt;
FF 55 FC 5F 5E或(e-debug)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;萬能斷點：&lt;/strong&gt;&lt;br&gt;
F3A58BC883E103F3A4E8&lt;/p&gt;
&lt;p&gt;按鈕事件如何使用 請去看我的&lt;a href=&#34;http://www.52ecy.pw/post-28.html&#34;&gt;零基礎學破解系列教程&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文部分摘自網路&lt;/p&gt;</description>
    </item>
    <item>
      <title>零基礎學破解系列教程大綱第一季</title>
      <link>https://en.moejue.cn/zh-hant/posts/33/</link>
      <pubDate>Mon, 08 May 2017 02:00:51 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/33/</guid>
      <description>&lt;p&gt;&lt;strong&gt;目的：本套教學目的是為了防破解，雖說這是一套講破解方面知識的教學，但是我們只有知道了破解者是如何破解我們的軟體，我們才能更好、更有效地防止我們的軟體被破解&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基礎入門篇&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;   1、中文搜尋與Nop                       [第一節下載地址](http://bbs.125.la/forum.php?mod=viewthread&amp;amp;tid=14017567)： 如何對程式進行編譯保存

   2、je與jmp使用 z標誌位               [第二節下載地址](http://bbs.125.la/forum.php?mod=viewthread&amp;amp;tid=14018591)：實戰了一款不知道什麼的網路驗證的爆破

   3、本地重啟驗證                          [第三節下載地址](http://bbs.125.la/forum.php?mod=viewthread&amp;amp;tid=14019645)：透過兩次的編譯保存進行爆破
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;按鈕事件篇&lt;/strong&gt;&lt;br&gt;
1、易語言按鈕事件，萬能斷點      &lt;a href=&#34;http://bbs.125.la/thread-14021176-1-1.html&#34;&gt;按鈕事件篇下載地址&lt;/a&gt;：依靠易語言體區分真正的易語言程式&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;提高篇&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;            1、網路驗證        [提高篇第一節下載地址](http://bbs.125.la/thread-14022484-1-1.html)：單步偵錯過程中注意暫存器和堆疊視窗的變化，注意可疑跳轉

          2、帶殼程式的偵錯(401000處)，打補丁(記憶體)     [提高篇第二節下載地址](http://bbs.125.la/thread-14023855-1-1.html)：（白寶雲網路驗證快速破解技巧）  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;脫殼篇&lt;/strong&gt;&lt;br&gt;
1、ESP定律                        &lt;a href=&#34;http://bbs.125.la/thread-14025607-1-1.html&#34;&gt;脫殼篇下載地址&lt;/a&gt;：注意一定要在xp系統下脫殼&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        2、單步追蹤法，修復IAT     [第二節的下載地址](http://bbs.125.la/thread-14025607-1-1.html)：(兩節是一起錄製發佈的)，打包了教學中用到的所有工具、奉上了最後一課的小禮物

    **在這忙忙碌碌的五月底，迎來了零基礎學破解系列教學第一季的完結。感謝一路以來一直支持我的小夥伴們！**  **如果有機會出第二季，我會提前在我部落格更新大綱說明，還請繼續關注啦！**
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;補充：&lt;br&gt;
線上觀看地址：&lt;a href=&#34;https://www.eyuyan.tv/tw-%E9%98%BF%E7%8F%8F-2&#34;&gt;易語言TV網&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>實現 Emlog 最新評論列表不顯示部落格主的評論回覆</title>
      <link>https://en.moejue.cn/zh-hant/posts/32/</link>
      <pubDate>Sat, 06 May 2017 03:17:23 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/32/</guid>
      <description>&lt;p&gt;部落格主需要經常與訪客互動，部落格主的回复也會作為一條評論顯示在最新評論處，這樣一來，如果部落格主一次回复好幾條評論留言，那麼在最新評論的地方顯示的都是自己的評論，這樣不太好。&lt;/p&gt;
&lt;p&gt;以我目前的 &lt;code&gt;emlog5.3.1&lt;/code&gt; 版本為例：&lt;/p&gt;
&lt;p&gt;打開 &lt;code&gt;include/lib&lt;/code&gt; 目錄下的 &lt;code&gt;cache.php&lt;/code&gt; 文件（這是一個快取函數文件），在其中找到以下程式碼：&lt;/p&gt;
&lt;p&gt;我的是在第179行，如下&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$query &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;db&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SELECT * FROM &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;DB_PREFIX&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;comment WHERE hide=&amp;#39;n&amp;#39; ORDER BY date DESC LIMIT 0, &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$index_comnum&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;將其修改為：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$query &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $this&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;db&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SELECT * FROM &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;DB_PREFIX&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;comment WHERE hide=&amp;#39;n&amp;#39; AND poster!=&amp;#39;阿珏&amp;#39; ORDER BY date DESC LIMIT 0, &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$index_comnum&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;提示：這是一段執行 SQL 語句的 PHP 程式碼，條件是檢測評論用戶的用戶名是不是部落格主的用戶名，是則不顯示該評論到最新評論列表。（也可以透過檢測電子郵件網址的 &lt;code&gt;poster!=&#39;阿珏&#39;&lt;/code&gt;，畢竟我自己回复是不帶電子郵件的，所以只能檢測用戶名了，當然 不要冒充我）&lt;/p&gt;
&lt;p&gt;最後保存文件後，登入 &lt;code&gt;emlog&lt;/code&gt; 的後台更新一下快取，刷新網頁就可以看見效果了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>程式設計師日常中病毒系列</title>
      <link>https://en.moejue.cn/zh-hant/posts/11/</link>
      <pubDate>Thu, 04 May 2017 05:30:48 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/11/</guid>
      <description>&lt;p&gt;DropFileName = &amp;ldquo;svchost.exe&amp;rdquo; 問題解決方案&lt;/p&gt;
&lt;p&gt;事情是這樣的，一朋友發來源碼讓我看下，手殘不小心點到裡頭的一個exe文件，彈出聯網請求，我便迅速關掉，之後發現同目錄多了一個偽裝成系統音樂文件夾的exe可執行文件。我就感覺到事情不妙了，但是又不能確定，隨後刪除這整個文件夾時提示有程式正在使用。&lt;/p&gt;
&lt;p&gt;我就放那暫時沒有管他了，之後的兩三個小時，越發覺電腦響應的速度越慢了，物理內存飆高。就將電腦重啟了。&lt;/p&gt;
&lt;p&gt;之後就想寫寫程式碼，打開一個html的文件，發現大事情了，電腦所有的html都出問題了（如下圖所示）。現在可以確定確實是感染病毒了。&lt;/p&gt;
&lt;p&gt;然後馬上馬不停蹄的再次下載了個360，對電腦進行了全盤查殺（不要問我為什麼下載360），長期裸奔的電腦，難免會來個一兩次的。&lt;/p&gt;
&lt;p&gt;單個測試，發現360只會把病毒程式碼刪掉，不會把這個文件刪掉，但是最下方被註釋掉的部分程式碼就不會刪掉了，到最後我還得要手動再處理一遍，雖然不處理也沒什麼太大問題，但是強迫症，苦逼( ╯▽╰)&lt;/p&gt;
&lt;p&gt;程式碼原理（作用）：
這串script程式碼是一串vbs語言的病毒，中了該病毒後你會發現你的本地所有html文檔打開後都會有這樣一串字符，不僅僅是html文檔，連dll文檔也會被感染。當然這種病毒不要太驚慌，因為他只是起到破壞文件的作用，不會有上傳隱私，盜號等危害。
這串程式碼大概意思就是找到svchost.exe這個進程然後注入數據運行，注入的就是後面的進制程式碼來運行。這種病毒和其他病毒不同的是這種vbs病毒感染能力非常強，html文件一旦被感染，那麼用戶只要打開html文檔病毒就運行上面該程式碼導致病毒直接感染到本地電腦全部html文件和dll文件。
的確，DLL文件也會被感染，導致部分軟體可以正常使用，不過殺毒軟體會報毒。而且你會發現你運行很多常用軟體都會報毒，比如以前常用的迅雷丶酷狗等等一些常用的軟體你再打開的時候居然提示都有病毒，當時我就覺得特別奇怪，迅雷是在官網下載的怎麼可能會報毒呢？所以這裡的原因就是vbs病毒感染了迅雷等軟體的安裝文件中的dll，所以殺毒軟體會不停的報毒，報毒名稱也是vbs腳本病毒。
提示：文中圖片已被外星人劫走&lt;/p&gt;</description>
    </item>
    <item>
      <title>暴露網站後台地址是一件非常危險的事</title>
      <link>https://en.moejue.cn/zh-hant/posts/21/</link>
      <pubDate>Sun, 30 Apr 2017 07:48:47 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/21/</guid>
      <description>&lt;p&gt;暴露一個網站的後台地址是一件非常危險的事情，比如我網站的後台地址：&lt;a href=&#34;http://52ecy.pw/admin/&#34;&gt;管理登入&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;網路是一個複雜的世界，每個站長還是要學會保護自己。&lt;/p&gt;
&lt;p&gt;emlog 的預設後台路徑是 admin 目錄，非常赤裸裸地暴露了重要的資訊。&lt;/p&gt;
&lt;p&gt;修改預設後台路徑共分三步：&lt;/p&gt;
&lt;p&gt;打開 admin 目錄，找到 globals.php，用 editplus 或者其它編輯器打開，如果你想用記事本打開也行 ^_^ 後果自負&lt;/p&gt;
&lt;p&gt;把資料夾 admin 改成你想要的名字，例如 xxxx 之類的。&lt;/p&gt;
&lt;p&gt;打開 admin/globals.php 這個檔案，現在可能是 xxxx/globals.php 了&lt;/p&gt;
&lt;p&gt;修改第 9 行程式碼：&lt;/p&gt;
&lt;p&gt;define(&amp;lsquo;TEMPLATE_PATH&amp;rsquo;, EMLOG_ROOT.&amp;rsquo;/admin/views/&amp;rsquo;);&lt;/p&gt;
&lt;p&gt;把其中的 admin 改成你新改的名稱 xxxx:&lt;/p&gt;
&lt;p&gt;define(&amp;lsquo;TEMPLATE_PATH&amp;rsquo;, EMLOG_ROOT.&amp;rsquo;/xxxx/views/&amp;rsquo;);&lt;/p&gt;
&lt;p&gt;第三步、刷新後台登入後在導航設定裡將「登入」隱藏，否則點擊會出現 404 錯誤多煩人啊～&lt;/p&gt;
&lt;h3 id=&#34;解決一些後遺症&#34;&gt;解決一些後遺症：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;改變後台路徑後，微語的表情圖片無法顯示，解決方法：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;打開 include/lib/function.base.php，找到&lt;/p&gt;
&lt;p&gt;$t = str_replace($data,&amp;rsquo;&lt;img title=&#34;&#39;.$data.&#39;&#34; src=&#34;&#39;.BLOG\_URL.&#39;admin/editor/plugins/emoticons/images/&#39;.$emos\[$data\].&#39;&#34;/&gt;&amp;rsquo;,$t);&lt;/p&gt;
&lt;p&gt;替換 admin 為 xxxx：&lt;/p&gt;
&lt;p&gt;$t = str_replace($data,&amp;rsquo;&lt;img title=&#34;&#39;.$data.&#39;&#34; src=&#34;&#39;.BLOG\_URL.&#39;xxxx/editor/plugins/emoticons/images/&#39;.$emos\[$data\].&#39;&#34;/&gt;&amp;rsquo;,$t);&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;若後台的個人設定裡沒有上傳新頭像，則微語頭像也無法在前台顯示，解決辦法：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;打開 t/index.php，找到&lt;/p&gt;
&lt;p&gt;$avatar = empty($user_cache[UID][&amp;lsquo;avatar&amp;rsquo;]) ? &amp;lsquo;../admin/views/images/avatar.jpg&amp;rsquo; : &amp;lsquo;../&amp;rsquo; . $user_cache[UID][&amp;lsquo;avatar&amp;rsquo;];&lt;/p&gt;
&lt;p&gt;替換 admin 為 xxxx：&lt;/p&gt;
&lt;p&gt;$avatar = empty($user_cache[UID][&amp;lsquo;avatar&amp;rsquo;]) ? &amp;lsquo;../xxxx/views/images/avatar.jpg&amp;rsquo; : &amp;lsquo;../&amp;rsquo; . $user_cache[UID][&amp;lsquo;avatar&amp;rsquo;];&lt;/p&gt;</description>
    </item>
    <item>
      <title>58同城的登錄（RSA演算法）</title>
      <link>https://en.moejue.cn/zh-hant/posts/16/</link>
      <pubDate>Wed, 23 Nov 2016 08:27:09 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/16/</guid>
      <description>&lt;p&gt;58同城的登入（RSA演算法）&lt;/p&gt;
&lt;p&gt;這一次。又是一個精彩的登入演算法解析&lt;/p&gt;
&lt;p&gt;目標位址：
&lt;a href=&#34;https://passport.58.com/login&#34;&gt;https://passport.58.com/login&lt;/a&gt;?（58 同城）
用到的工具：
js 除錯工具（我這裡用的是改自某論壇的 js 除錯工具，相對智慧化了）
抓包工具（我這次就直接使用瀏覽器的 F12 了，搜尋關鍵字更方便）&lt;/p&gt;
&lt;p&gt;提示：由於這篇文章發表於 1 年前，年久失修，圖片內容已遺失！&lt;/p&gt;</description>
    </item>
    <item>
      <title>新浪微博動態 RSA 分析圖文 &#43; 登入</title>
      <link>https://en.moejue.cn/zh-hant/posts/13/</link>
      <pubDate>Wed, 12 Oct 2016 06:50:19 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/13/</guid>
      <description>&lt;p&gt;新浪微博動態 RSA 分析&lt;/p&gt;
&lt;p&gt;一、用到的工具
1.ie 瀏覽器（9 以上的版本）
2.httpwatch （中英文都可以）
3.js 偵錯工具&lt;/p&gt;
&lt;p&gt;目標網站：&lt;a href=&#34;http://weibo.com/&#34;&gt;http://weibo.com&lt;/a&gt; (新浪微博)&lt;/p&gt;
&lt;p&gt;二、抓包
還是遵從我們上一次的抓包流程，養成良好的習慣，這裡就不多做說明。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixqxrdj30m808p421.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixmpmdj30ja06r3z4.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixpef1j30m60azgn3.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixrm8wj30k008rdgm.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixw3l7j30m806eq5d.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixyrvuj30m80fvtfm.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iy8lk3j30jb07uwf9.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iy9zgtj30kv089aan.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iycexlj30m807w0ve.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iymkxpj30m80fkq6d.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iysq5qj30et06bwev.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iyxgegj30m80a8gnz.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iz51cqj30gc08175d.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iz6tvrj30ip0fut9z.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2iz8pi3j30m807ewf0.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2izftdtj30ku05yjs4.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2izoqdrj30kh05cgm5.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2izr82ij30hh0e5400.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2izvdnzj30h403o74o.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2j02n8yj30m8030mye.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;三、分析抓包資料
1、確定我們的登入提交包&lt;/p&gt;
&lt;p&gt;2、靈活變通關鍵字的查找&lt;/p&gt;
&lt;p&gt;四、尋找關鍵字
1、可以在 HttpWatch 上搜尋關鍵字
也可以在 ie 的 F12 繼續尋找
2、尋找 pwencode 關鍵字&lt;/p&gt;
&lt;p&gt;五、js 偵錯
1、這裡和上次不同，我先把呼叫的程式碼複製出來先做簡單的改寫，因為複製出來的程式碼並不是 function（）函數，如同易語言中的子程式
（這裡描述可能有誤）
3個參數，我們知道 p 是密碼，那剩下兩個我們去開發人員工具中看一下&lt;/p&gt;
&lt;p&gt;六、具體看圖文分析
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2j0d0tpj30m80elwkm.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2j05q0ej30jz0bx3zu.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;有什麼不對的地方還望指出&lt;/p&gt;</description>
    </item>
    <item>
      <title>中國電信登入RSA演算法&#43;分析圖文</title>
      <link>https://en.moejue.cn/zh-hant/posts/14/</link>
      <pubDate>Fri, 30 Sep 2016 01:29:10 +0000</pubDate>
      <guid>https://en.moejue.cn/zh-hant/posts/14/</guid>
      <description>&lt;p&gt;廢話不多說！&lt;/p&gt;
&lt;p&gt;一、用到的工具&lt;/p&gt;
&lt;p&gt;1.ie瀏覽器（9以上的版本）&lt;/p&gt;
&lt;p&gt;2.httpwatch （中英文都可以）&lt;/p&gt;
&lt;p&gt;3.js偵錯工具&lt;/p&gt;
&lt;p&gt;目標網站：&lt;a href=&#34;http://xz.189.cn/sso/LoginServlet&#34;&gt;http://xz.189.cn/sso/LoginServlet&lt;/a&gt; 電信189登入&lt;/p&gt;
&lt;p&gt;二、抓包：&lt;/p&gt;
&lt;p&gt;1.抓包前先清除網站的cookie和快取
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh27cuooyj30l90cv0u6.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh27cuooyj30l90cv0u6.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2.在頁面開啟前就開啟抓包工具(否則會抓不到加密的js)&lt;/p&gt;
&lt;p&gt;3.判斷哪一個才是我們的登入提交包
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh27p2sm7j30m80akdjt.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh27p2sm7j30m80akdjt.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;三、分析抓包資料：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh282bkdxj30ls076t9g.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh282bkdxj30ls076t9g.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1.這裡就用到ie的F12開發人員工具&lt;/p&gt;
&lt;p&gt;2.查到我們密碼關鍵字 密碼 passWord
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh28mmahhj30m804iwfp.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh28mmahhj30m804iwfp.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3.繼續追蹤 加密所呼叫的函數 encryptedString
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh28uu87ij30ik087aaf.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh28uu87ij30ik087aaf.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4.encryptedString 這個函數的兩個參數 我們也要知道是什麼 繼續尋找key&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh29aoqekj30m803zq3w.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh29aoqekj30m803zq3w.jpg&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh29rurbtj30m80ccwi2.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh29rurbtj30m80ccwi2.jpg&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh29u07pgj30i50bx753.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh29u07pgj30i50bx753.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5.那我加密所需的參數就夠了，接下來就是偵錯了，這裡有人就會問 那參數不是有兩個嗎 另一個s呢 透過函數我們知道 s就是對密碼加密那的pwd 透過函數的呼叫if判斷可以知道pwd 就是我們的密碼passWord&lt;/p&gt;
&lt;p&gt;6.接下來複製呼叫函數先在開發人員工具中先偵錯一下 需要key，s兩個參數
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2a02ub9j30m60d440i.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2a02ub9j30m60d440i.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7.ie中偵錯沒有問題 ，那接下來在js偵錯工具中偵錯一下&lt;/p&gt;
&lt;p&gt;8.複製3個RSA的機密js以及key 呼叫bodyRSA()這個函數 參數為密碼 我們發現 它是一個物件 沒有辦法直接呼叫 如果繼續呼叫就會導致工具掛掉
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh2a1pjyxj30fq06vaau.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqh2a1pjyxj30fq06vaau.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;9.這裡就是RSA的難點 需要進行改寫，否則我們的易語言也沒有辦法呼叫。&lt;/p&gt;
&lt;p&gt;10.將改寫完的函數和剛才一樣複製到偵錯工具中，還是呼叫bodyrsa（）這個函數
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2acq1dwj30m808utbb.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2acq1dwj30m808utbb.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最後發現我們成功了
&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ai5ee1j30hy0dggms.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ai5ee1j30hy0dggms.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因為沒有電信手機號，沒辦法寫個完整的對cookie操作登入 期待下期！&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
