易語言模擬真人鼠標軌跡算法

一.簡介

鼠標軌跡算法是一種模擬人類鼠標操作的程序,它能夠模擬出自然而真實的鼠標移動路徑。

鼠標軌跡算法的底層實現采用C/C++語言,原因在于C/C++提供了高性能的執行能力和直接訪問操作系統底層資源的能力。

鼠標軌跡算法具有以下優勢:

  • 模擬人工軌跡:算法能夠模擬出非貝塞爾曲線的自然鼠標移動,避免了機械式的直線移動。
  • 適當的停頓/加速/減速:算法能夠根據需要模擬出鼠標的停頓、加速和減速,使得軌跡更加真實。
  • 隨機軌跡:在固定兩點間,算法能夠生成不同的隨機軌跡,增加了軌跡的不可預測性。

二.應用場景

  • 游戲鼠標軌跡檢測(檢測能過無畏fps類型、傳奇、夢幻等游戲,已經在游戲中驗證)
  • 滑塊拖動驗證
  • 部分網頁鼠標軌跡檢測

三.支持多種編程語言

1.C++頭文件

/******************************************************************************************/@SDK功能描述:C++鼠標軌跡/******************************************************************************************//******************************************************************************************/@SDK功能描述:C++鼠標軌跡/******************************************************************************************/#ifndef _SN_SDK_H__
#define _SN_SDK_H__#include <windows.h>enum SN_TRACK_MOVE_TYPE
{TRACK_MOVE_TYPE_NORMAL=0,		// 用于常規軌跡 - 普通游戲鼠標軌跡TRACK_MOVE_TYPE_SLIDER,			// 用于滑塊軌跡,比常規常規軌跡密度更大 - 滑塊驗證軌跡
};enum SN_TRACK_POINT_TYPE
{TRACK_POINT_TYPE_NORMAL=0,		// 默認絕對坐標TRACK_POINT_TYPE_RELATIVE,		// 相對坐標
};//返回參數
typedef struct SN_RESULT {int code;			//錯誤碼,如果為 0 表示成功,否則表示錯誤號char message[4096];	//錯誤信息,如果為 "OK" 表示成功,否則返回錯誤信息}SN_RESULT;//坐標參數
typedef struct SN_POINT
{int x;				//屏幕坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)int y;				//屏幕坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)}SN_POINT;//軌跡參數
typedef struct SN_POINT_PARAMS
{struct SN_POINT point;//屏幕坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)int delayTime;		  //延時時間(單位:毫秒),僅供參考}SN_POINT_PARAMS;/*創建句柄
*
* 參數:
*	[in] szKey:		卡密(購買卡密:https://shop.4yuns.com/links/7C9F16B7)
* 	[in] pOnnxFilePath:設置 onnx 模型文件路徑,如果設置為 NULL,默認和 DLL文件同級目錄
* 	[out] pResult:		返回錯誤信息,參數pResult.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
* 返回值:成功返回句柄,失敗返回NULL
*
*/
HANDLE WINAPI apiSNCreateHandle(char* szKey, char* pOnnxFilePath, SN_RESULT* pResult);/*設置鼠標移動軌跡參數,調節軌跡密度/速度/軌跡類型,目前可以支持滑塊軌跡/普通軌跡
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
*  	[in] density:		軌跡密度調節 ,必須大于或者等于 1,默認 5,舉個例子:假如軌跡有 100 個點,累計耗時 1000 毫秒,設置 density 如下:
*								-  density = 1  時,軌跡有 100/1=100 個點,整個軌跡累計耗時 1000/1=1000 毫秒 (默認 1  倍速度)
*								-  density = 2  時,軌跡有 100/2=50  個點,整個軌跡累計耗時 1000/2=500  豪秒 (等價 2  倍速度)
*								-  density = 3  時,軌跡有 100/3=33  個點,整個軌跡累計耗時 1000/3=333  豪秒 (等價 3  倍速度)
*								-  density = 5  時,軌跡有 100/5=20  個點,整個軌跡累計耗時 1000/5=200  豪秒 (等價 5  倍速度)
*								-  density = 20 時,軌跡有 100/20=5  個點,整個軌跡累計耗時 1000/20=50  豪秒 (等價 20 倍速度)
*								
*  	[in] type:			軌跡類型(0代表絕對普通軌跡,1代表滑塊軌跡(獲得的軌跡點數比普通軌跡點數更多),具體參考enum SN_TRACK_MOVE_TYPE)
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNSetTrackParams(HANDLE handle, int density=5, int type=0);/*獲取鼠標移動軌跡
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
* 	[in] startPoint:	開始坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
* 	[in] endPoint:		結束坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
*  	[in] type:			軌跡坐標類型(0代表絕對坐標,1代表相對坐標,具體參考enum SN_TRACK_POINT_TYPE)
* 	[out] points:		軌跡數組,如果數組中元素 point 出現(10000,10000),表示鼠標軌跡結束
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNMouseMove(HANDLE handle, SN_POINT *startPoint, SN_POINT *endPoint, int type, SN_POINT_PARAMS* points);/*獲取版本號
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
* 	[out] szVersion:	版本號
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNGetVersion(HANDLE handle, char* szVersion);/*獲取卡密到期時間
*
* 參數:
*	[in]  handle:		句柄(通過調用apiSNCreateHandle得到)
* 	[out] pResult:		返回錯誤信息,參數pResult->code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
* 返回值:返回卡密到期時間,失敗返回NULL,錯誤信息請查看參數 pResult->message
*
*/
char* WINAPI apiSNGetKeyExpiresTime(HANDLE handle, SN_RESULT* pResult);/*獲取錯誤信息
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNGetError(HANDLE handle);/*釋放句柄(內存)
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNDestroyHandle(HANDLE handle);#endif // !_SN_SDK_H__

2.其他編程語言

為了易于集成和使用,我們將鼠標軌跡算法封裝為DLL(動態鏈接庫)。這種封裝方式不僅保留了算法的性能優勢,還提供了跨平臺和跨語言的兼容性,目前支持編程語言如下:

  • C++
  • Python
  • 易語言

推算軌跡算法耗時均為毫秒級,<= 5ms ,速度超快,fps類型游戲完全無壓力!

3.鼠標軌跡API調用流程圖

注意:如果是多線程,每個線程都需要通過apiSNCreateHandle創建HANDLE句柄,這樣才能多個線程互不影響

4.易語言鼠標軌跡dll接口

/****************************************************************************************/@SDK功能描述:鼠標軌跡
/****************************************************************************************.版本 2
.支持庫 spec.程序集 窗口程序集_啟動窗口.子程序 _啟動子程序, 整數型_臨時子程序 ()
返回 (0).子程序 _臨時子程序
.局部變量 handle, 整數型
.局部變量 pResult, SN_RESULT, 靜態, , 返回錯誤信息,參數pResult.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
.局部變量 startPoint, SN_POINT, , , 開始坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
.局部變量 endPoint, SN_POINT, , , 結束坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
.局部變量 type, 整數型, , , 軌跡類型,0 為絕對坐標 ,1為相對坐標
.局部變量 points, SN_POINT_PARAMS, , "3000", 軌跡數組,如果數組中元素 point 出現(10000,10000),表示鼠標軌跡結束
.局部變量 szTime, 文本型, , , 卡密結束時間;
.局部變量 index, 整數型
.局部變量 density, 整數型, , , 設置軌跡類型/速度/密度 - 默認是5倍速度/密度,可以不設置,具體根據自身要求設置' ---------------------------------------------------------------
' 1.創建句柄
' 其中卡密 SNKJ86RYDBY1YxafpLG3ep1R6NHFYLjz2UFFcE8Lx9Tq 僅用于測試,需要找開發人員重新購買,購買卡密連接:https://shop.4yuns.com/links/7C9F16B7
' ---------------------------------------------------------------
handle = apiSNCreateHandle (“SNKJ86RYDBY1YxafpLG3ep1R6NHFYLjz2UFFcE8Lx9Tq”, “SNTrack.onnx”, pResult)
調試輸出 (pResult.code, 到文本 (pResult.message))
調試輸出 (“句柄”, handle)
.如果真 (pResult.code < 0)調試輸出 (“-----------程序結束-----------”)返回 ().如果真結束' 獲取卡密到期時間
szTime = apiSNGetKeyExpiresTime (handle, pResult)
調試輸出 (到文本 (szTime))' 設置軌跡類型/速度/密度 - 默認是5倍速度/密度,可以不設置,具體根據自身要求設置, 設舉個例子:假如軌跡有 100 個點,累計耗時 1000 毫秒,設置 density 如下:
' density = 1  時,軌跡有 100/1=100 個點,整個軌跡累計耗時 1000/1=1000 毫秒 (默認 1  倍速度)
' density = 2  時,軌跡有 100/2=50  個點,整個軌跡累計耗時 1000/2=500  豪秒 (等價 2  倍速度)
' density = 3  時,軌跡有 100/3=33  個點,整個軌跡累計耗時 1000/3=333  豪秒 (等價 3  倍速度)
' density = 5  時,軌跡有 100/5=20  個點,整個軌跡累計耗時 1000/5=200  豪秒 (等價 5  倍速度)
' density = 20 時,軌跡有 100/20=5  個點,整個軌跡累計耗時 1000/20=50  豪秒 (等價 20 倍速度)
density = 5
apiSNSetTrackParams (handle, density, 0)' 開始坐標
startPoint.x = 100
startPoint.y = 100
' 結束坐標
endPoint.x = 800
endPoint.y = 800
' 軌跡類型,0 為絕對坐標 ,1為相對坐標
type = 0調試輸出 (“預備定義數組數量”, 取數組成員數 (points))
' ---------------------------------------------------------------
' 2.獲取鼠標軌跡
' ---------------------------------------------------------------
apiSNMouseMove (handle, startPoint, endPoint, type, points)調試輸出 (取變量地址 (startPoint.x), 取變量地址 (startPoint.y))
.計次循環首 (取數組成員數 (points), index).如果真 (points [index].point.x = 10000 且 points [index].point.y = 10000)刪除成員 (points, index + 1, 10000 - index)跳出循環 ().如果真結束' 調試輸出 (index, “坐標”, points [index].point.x, points [index].point.y, points [index].delayTime)
.計次循環尾 ()
調試輸出 (取數組成員數 (points)).計次循環首 (取數組成員數 (points), index)調試輸出 (“坐標”, points [index].point.x, points [index].point.y, points [index].delayTime)
.計次循環尾 ()' ---------------------------------------------------------------
' 3.釋放內存
' ---------------------------------------------------------------
apiSNDestroyHandle (handle)
調試輸出 (“-----------程序結束-----------”)

5.云盤源碼下載

  • 百度云盤
  • 夸克云盤
  • 123云盤

云盤目錄介紹:

demo - 包含各種編程語言的demo

dll - 分別是x86和x64平臺所需要的dll/lib/h文件

windows 鼠標軌跡測試工具 - exe測試鼠標軌跡效果( demo 中的 c++ 工程編譯后的exe可執行文件)

四.效果演示

1.開始坐標為(100,100),結束坐標為(800,800),通過調用接口獲得 4 條鼠標軌跡

2.開始坐標為(1000,100),結束坐標為(800,800),通過調用接口獲得 2 條鼠標軌跡

?

五.常見問題

1.是否支持多線程

支持

2.如何使用多線程

參考前面的《2.鼠標軌跡API調用流程圖》,多線程和單線程類似;如果是多線程,那么每個線程都需要通過apiSNCreateHandle創建HANDLE句柄,這樣才能多個線程互不影響

3.如何判斷軌跡結束

可以通過循環判斷得到的軌跡坐標,如果當前坐標的X值和Y值都是1000的情況下,默認軌跡結束

(之前的判斷是(-1,-1)作為軌跡結束的標記,現在修改為(10000,10000)作為軌跡結束標記,目的是為了兼容相對坐標)

4.鼠標軌跡設置相對坐標

在函數 apiSNMouseMove 中 type 參數,0 為 絕對坐標 ; 1 為相對坐標

5.如何調節點的密集程度

在(2024.12.22)SDK2.0版本中新增接口 apiSNSetTrackParams 中的 density 參數可以用來調節軌跡密度,舉個例子:

  • density = 1 時,默認軌跡有 100 個點,整個軌跡累計耗時 1000 毫秒 (默認 1 倍速度)
  • density = 2 時,軌跡有 100/2=50 個點,整個軌跡累計耗時 500?毫秒 (等價 2 倍速度)
  • density = 3 時,軌跡有 100/3=33 個點,整個軌跡累計耗時 333 毫秒 (等價 3 倍速度)
  • density = 5 時,軌跡有 100/5=20 個點,整個軌跡累計耗時 200 毫秒 (等價 5 倍速度)

不同的游戲需要的軌跡密度不一樣,類似 fps 游戲,鼠標滑動軌跡比較快,density 可以設置為 5 或者更高 ; 類似魔獸世界或者夢幻,density 可以調節為 2 或者 3或者5

6.滑塊驗證軌跡

在函數 apiSNSetTrackParams 中 type 參數,0 為普通鼠標軌跡 ; 1 為滑塊軌跡

普通鼠標貴和滑塊軌跡區別:滑塊軌跡比普通鼠標軌跡坐標點更多(相同的開始/結束坐標),點與點之間更加密集,軌跡的開始和結束暫停/加速更加明顯

六.更新日志

  • 2024.02.06 c++ 模擬人工鼠標軌跡demo
  • 2024.06.06 python 模擬人工鼠標軌跡demo
  • 2024.06.25 新增錯誤日志信息
  • 2024.07.15 優化水平/垂直軌跡
  • 2024.08.20 優化部分軌跡可能出現負數的問題
  • 2024.09.19 優化部分軌跡延遲時間為0的情況(可能會造成鼠標瞬移)
  • 2024.09.21 修復部分水平/垂直軌跡出現負數的情況
  • 2024.09.28 新增易語言demo
  • 2024.11.01 修改接口,兼容易語言代碼
  • 2024.11.17 支持移動軌跡為相對坐標(默認是軌跡是絕對坐標)
  • 2024.12.15 新增文字識別OCR,支持編程語言如下:
    • Python
    • 易語言
    • C語言
    • C++
  • 2024.12.22 優化鼠標軌跡
    • 新增滑塊軌跡
    • 優化鼠標軌跡 - 支持密度調節
  • 2024.12.29
    • 修復鼠標軌跡可能會崩潰的問題
    • 修復OCR文字識別失敗問題(帶有中文路徑的圖片)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898437.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matplotlib 柱形圖

Matplotlib 柱形圖 引言 在數據可視化領域&#xff0c;柱形圖是一種非常常見且強大的圖表類型。它能夠幫助我們直觀地比較不同類別或組之間的數據大小。Matplotlib&#xff0c;作為Python中最受歡迎的數據可視化庫之一&#xff0c;提供了豐富的繪圖功能&#xff0c;其中包括創…

sparksql的Transformation與 Action操作

Transformation操作 與RDD類似的操作 map、filter、flatMap、mapPartitions、sample、 randomSplit、 limit、 distinct、dropDuplicates、describe&#xff0c;而以上這些都是企業中比較常用的&#xff0c;這里在一個文件中統一論述 val df1 spark.read.json("src/m…

微軟Data Formulator:用AI重塑數據可視化的未來

在數據驅動的時代,如何快速將復雜數據轉化為直觀的圖表是每個分析師面臨的挑戰。微軟研究院推出的開源工具 Data Formulator,通過結合AI與交互式界面,重新定義了數據可視化的工作流。本文將深入解析這一工具的核心功能、安裝方法及使用技巧,助你輕松駕馭數據之美。 一、Dat…

20分鐘上手DeepSeek開發:SpringBoot + Vue2快速構建AI對話系統

20分鐘上手DeepSeek開發&#xff1a;SpringBoot Vue2快速構建AI對話系統 前言 在生成式AI技術蓬勃發展的今天&#xff0c;大語言模型已成為企業智能化轉型和個人效率提升的核心驅動力。作為國產大模型的優秀代表&#xff0c;DeepSeek憑借其卓越的中文語義理解能力和開發者友…

神經網絡中層與層之間的關聯

目錄 1. 層與層之間的核心關聯&#xff1a;數據流動與參數傳遞 1.1 數據流動&#xff08;Forward Propagation&#xff09; 1.2 參數傳遞&#xff08;Backward Propagation&#xff09; 2. 常見層與層之間的關聯模式 2.1 典型全連接網絡&#xff08;如手寫數字分類&#xf…

本地部署deepseek-r1建立向量知識庫和知識庫檢索實踐【代碼】

目錄 一、本地部署DS 二、建立本地知識庫 1.安裝python和必要的庫 2.設置主目錄工作區 3.編寫文檔解析腳本 4.構建向量數據庫 三、基于DS,使用本地知識庫檢索 本地部署DS,其實非常簡單,我寫了一篇操作記錄,我終于本地部署了DeepSeek-R1(圖文全過程)-CSDN博客 安裝…

String、StringBuffer、StringBuiler的區別

可變性 String是不可變的&#xff0c;這是因為String內部用于存儲數據的char[]數組用了final關鍵字修飾&#xff0c;而且是private的&#xff0c;并且沒有對外提供修改數組的方法。 StringBuffer和StringBuilder是可變的&#xff0c;它們內部的char數組沒有用final關鍵字修飾。…

Certd自動化申請和部署SSL證書并配置https

服務器使用的華為云&#xff0c;之前SSL證書通過配置Cloudflare的DNS實現的&#xff0c;最近華為云備案提示需修改解析至境內華為云IP&#xff0c;若解析境外IP&#xff0c;域名無需備案&#xff0c;需注銷或取消接入備案信息&#xff0c;改為使用Certd自搭建證書管理工具&…

git tag以及git

git tag 以及git 一、先說收獲吧 1. git bash 在windows上 類似于linux的bash提供的shell命令行窗口&#xff0c;可以執行很多linux命令&#xff0c;cd pwd ls vim cat touch mkdir&#xff0c;還可以用正則匹配查看標簽。相當于在windows上裝了一個小的linux。git init myproj…

ESP8266通過AT指令配置雙向透傳

一、固件燒錄 IO0接地后上電&#xff0c;進入燒錄模式&#xff0c;燒錄完成后去掉即可 二、參數配置 1、服務器端 ATCWMODE_DEF2 ATCWSAP_DEF"ESP8266","12345678",5,3 ATSAVETRANSLINK1,"192.168.4.2",9090,"UDP",8080 2、客戶端…

【3D模型】【游戲開發】【Blender】Blender模型分享-獅頭木雕附導入方法

導入方法&#xff1a; [Blender] 如何導入包含紋理的 .blend 模型文件 在 3D 建模和渲染工作中&#xff0c;Blender 是一款功能強大的免費開源軟件。很多時候&#xff0c;我們需要導入 .blend 后綴的模型文件&#xff0c;同時確保紋理&#xff08;textures&#xff09;文件夾…

C# | 超簡單CSV表格讀寫操作(輕松將數據保存到CSV,并支持讀取還原)

C# | 超簡單CSV表格讀寫操作&#xff08;輕松將數據保存到CSV&#xff0c;并支持讀取還原&#xff09; 文章目錄 C# | 超簡單CSV表格讀寫操作&#xff08;輕松將數據保存到CSV&#xff0c;并支持讀取還原&#xff09;一、上位機開發中的CSV應用背景二、CSV讀寫實戰教學1. 基本對…

Git push后撤銷提交

一、介紹 當某次更改完工程后&#xff0c;push了本地倉庫到云端&#xff0c;但是發現有地方改錯了&#xff0c;想撤銷這次推送&#xff0c;或者某次提交就更改了很小一部分&#xff0c;想和本地這次修改的合并為一次推送&#xff0c;省的在云端顯示特別多次提交&#xff0c;顯得…

Unity導出WebGL,無法顯示中文

問題&#xff1a;中文無法顯示 默認字體無法顯示中文 在編輯器中設置了中文和英文的按鈕&#xff0c;中文按鈕無法顯示 導出后無法顯示中文 解決辦法&#xff1a; 自己添加字體&#xff0c;導入項目&#xff0c;并引用 示例 下載一個字體文件&#xff0c;這里使用的阿里…

閱讀《Vue.js設計與實現》 -- 02

接上一篇文章&#xff1a;閱讀《Vue.js設計與實現》 – 01 文章目錄 第二章提升用戶的開發體驗tips 控制框架代碼的體積Tree-Shaking副作用 框架應該輸出怎樣的構建產物&#xff1f;注意這兩個文件有什么區別&#xff1f; 特性開關如何實現&#xff1f; 處理錯誤TS支持 第二章 …

Mac:Ant 下載+安裝+環境配置(詳細講解)

&#x1f4cc; 下載 Ant 下載地址&#xff1a;https://ant.apache.org/bindownload.cgi &#x1f4cc; 無需安裝 Apache官網下載 Ant 壓縮包&#xff0c;無需安裝&#xff0c;下載解壓后放到自己指定目錄下即可。 按我自己的習慣&#xff0c;我會在用戶 jane 目錄下新建了個…

qt圖表背景問題

從代碼來看&#xff0c;這段代碼涉及到設置背景透明度和背景可見性的操作&#xff0c;主要是在一個基于Qt框架的圖形界面程序中對某個圖表控件&#xff08;fontChart&#xff09;和視圖控件&#xff08;fontChartView&#xff09;進行操作。以下是每行代碼的作用以及它們之間的…

藍橋杯國賽子串2023動態規劃,暴力

#include <bits/stdc.h> using namespace std; // string ss; #define int long long string s; //該方法通過動態規劃&#xff0c;找到2023字串&#xff0c;而2023等于202加3&#xff0c;202等于202&#xff0c;20等于20&#xff1b; int f2() {int dp[4]{0};//dp[0]代表…

uni-app——網絡API

uni-app 網絡API 在 uni-app 開發中&#xff0c;網絡請求是獲取數據與和服務器交互的重要手段。以下介紹 uni-app 中常見的網絡 API&#xff0c;包括發起請求、上傳和下載以及 WebSocket、UDP 通信等方面。 發起請求 在 uni-app 里&#xff0c;使用uni.request(OBJECT)來發起…

計算機網絡筆記再戰——理解幾個經典的協議HTTP章3

理解幾個經典協議——HTTP章3 返回結果的HTTP狀態碼 ? 我們知道&#xff0c;ICMP可以傳遞IP通信時候的狀態如何。HTTP雖然沒有輔助的解析&#xff0c;但是它可以使用狀態碼來表達我們的HTTP請求的結果&#xff0c;標記服務器端的處理是否正常、通知出現的錯誤等工作。這就是…