Files
2025-10-20 12:32:18 +08:00

1031 lines
49 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "bb51e332",
"metadata": {},
"outputs": [],
"source": [
"from requests import get,post\n",
"import hashlib"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a9fb0ee3",
"metadata": {},
"outputs": [],
"source": [
"accessToken = \"4a1c3f90c2d6483286a79d9e88cfaf0d\"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4fd63ee3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Response [400]>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"http://door.hxzhxy.cn:1314/demo\",json={\"demo\":1},timeout=5)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "639176e0",
"metadata": {},
"outputs": [
{
"ename": "ConnectionError",
"evalue": "HTTPConnectionPool(host='100.64.0.1', port=9000): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000016E573E2C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connection.py:196\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 196\u001b[0m sock \u001b[38;5;241m=\u001b[39m connection\u001b[38;5;241m.\u001b[39mcreate_connection(\n\u001b[0;32m 197\u001b[0m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dns_host, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mport),\n\u001b[0;32m 198\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtimeout,\n\u001b[0;32m 199\u001b[0m source_address\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msource_address,\n\u001b[0;32m 200\u001b[0m socket_options\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msocket_options,\n\u001b[0;32m 201\u001b[0m )\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m socket\u001b[38;5;241m.\u001b[39mgaierror \u001b[38;5;28;01mas\u001b[39;00m e:\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\util\\connection.py:85\u001b[0m, in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[0;32m 84\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 85\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\n\u001b[0;32m 86\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 87\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\util\\connection.py:73\u001b[0m, in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[0;32m 72\u001b[0m sock\u001b[38;5;241m.\u001b[39mbind(source_address)\n\u001b[1;32m---> 73\u001b[0m sock\u001b[38;5;241m.\u001b[39mconnect(sa)\n\u001b[0;32m 74\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n",
"\u001b[1;31mConnectionRefusedError\u001b[0m: [WinError 10061] 由于目标计算机积极拒绝,无法连接。",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[1;31mNewConnectionError\u001b[0m Traceback (most recent call last)",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:789\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[0;32m 788\u001b[0m \u001b[38;5;66;03m# Make the request on the HTTPConnection object\u001b[39;00m\n\u001b[1;32m--> 789\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_request(\n\u001b[0;32m 790\u001b[0m conn,\n\u001b[0;32m 791\u001b[0m method,\n\u001b[0;32m 792\u001b[0m url,\n\u001b[0;32m 793\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout_obj,\n\u001b[0;32m 794\u001b[0m body\u001b[38;5;241m=\u001b[39mbody,\n\u001b[0;32m 795\u001b[0m headers\u001b[38;5;241m=\u001b[39mheaders,\n\u001b[0;32m 796\u001b[0m chunked\u001b[38;5;241m=\u001b[39mchunked,\n\u001b[0;32m 797\u001b[0m retries\u001b[38;5;241m=\u001b[39mretries,\n\u001b[0;32m 798\u001b[0m response_conn\u001b[38;5;241m=\u001b[39mresponse_conn,\n\u001b[0;32m 799\u001b[0m preload_content\u001b[38;5;241m=\u001b[39mpreload_content,\n\u001b[0;32m 800\u001b[0m decode_content\u001b[38;5;241m=\u001b[39mdecode_content,\n\u001b[0;32m 801\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mresponse_kw,\n\u001b[0;32m 802\u001b[0m )\n\u001b[0;32m 804\u001b[0m \u001b[38;5;66;03m# Everything went great!\u001b[39;00m\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:495\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[1;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[0;32m 494\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 495\u001b[0m conn\u001b[38;5;241m.\u001b[39mrequest(\n\u001b[0;32m 496\u001b[0m method,\n\u001b[0;32m 497\u001b[0m url,\n\u001b[0;32m 498\u001b[0m body\u001b[38;5;241m=\u001b[39mbody,\n\u001b[0;32m 499\u001b[0m headers\u001b[38;5;241m=\u001b[39mheaders,\n\u001b[0;32m 500\u001b[0m chunked\u001b[38;5;241m=\u001b[39mchunked,\n\u001b[0;32m 501\u001b[0m preload_content\u001b[38;5;241m=\u001b[39mpreload_content,\n\u001b[0;32m 502\u001b[0m decode_content\u001b[38;5;241m=\u001b[39mdecode_content,\n\u001b[0;32m 503\u001b[0m enforce_content_length\u001b[38;5;241m=\u001b[39menforce_content_length,\n\u001b[0;32m 504\u001b[0m )\n\u001b[0;32m 506\u001b[0m \u001b[38;5;66;03m# We are swallowing BrokenPipeError (errno.EPIPE) since the server is\u001b[39;00m\n\u001b[0;32m 507\u001b[0m \u001b[38;5;66;03m# legitimately able to close the connection after sending a valid response.\u001b[39;00m\n\u001b[0;32m 508\u001b[0m \u001b[38;5;66;03m# With this behaviour, the received response is still readable.\u001b[39;00m\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connection.py:398\u001b[0m, in \u001b[0;36mHTTPConnection.request\u001b[1;34m(self, method, url, body, headers, chunked, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[0;32m 397\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mputheader(header, value)\n\u001b[1;32m--> 398\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mendheaders()\n\u001b[0;32m 400\u001b[0m \u001b[38;5;66;03m# If we're given a body we start sending that in chunks.\u001b[39;00m\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\http\\client.py:1331\u001b[0m, in \u001b[0;36mHTTPConnection.endheaders\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m 1330\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CannotSendHeader()\n\u001b[1;32m-> 1331\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_send_output(message_body, encode_chunked\u001b[38;5;241m=\u001b[39mencode_chunked)\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\http\\client.py:1091\u001b[0m, in \u001b[0;36mHTTPConnection._send_output\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m 1090\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_buffer[:]\n\u001b[1;32m-> 1091\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msend(msg)\n\u001b[0;32m 1093\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m message_body \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 1094\u001b[0m \n\u001b[0;32m 1095\u001b[0m \u001b[38;5;66;03m# create a consistent interface to message_body\u001b[39;00m\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\http\\client.py:1035\u001b[0m, in \u001b[0;36mHTTPConnection.send\u001b[1;34m(self, data)\u001b[0m\n\u001b[0;32m 1034\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mauto_open:\n\u001b[1;32m-> 1035\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconnect()\n\u001b[0;32m 1036\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connection.py:236\u001b[0m, in \u001b[0;36mHTTPConnection.connect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 235\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 236\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_new_conn()\n\u001b[0;32m 237\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tunnel_host:\n\u001b[0;32m 238\u001b[0m \u001b[38;5;66;03m# If we're tunneling it means we're connected to our proxy.\u001b[39;00m\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connection.py:211\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 210\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m--> 211\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NewConnectionError(\n\u001b[0;32m 212\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to establish a new connection: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 213\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n\u001b[0;32m 215\u001b[0m \u001b[38;5;66;03m# Audit hooks are only available in Python 3.8+\u001b[39;00m\n",
"\u001b[1;31mNewConnectionError\u001b[0m: <urllib3.connection.HTTPConnection object at 0x0000016E573E2C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[1;31mMaxRetryError\u001b[0m Traceback (most recent call last)",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\adapters.py:589\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 588\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m conn\u001b[38;5;241m.\u001b[39murlopen(\n\u001b[0;32m 590\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[0;32m 591\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m 592\u001b[0m body\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mbody,\n\u001b[0;32m 593\u001b[0m headers\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[0;32m 594\u001b[0m redirect\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 595\u001b[0m assert_same_host\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 596\u001b[0m preload_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 597\u001b[0m decode_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 598\u001b[0m retries\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_retries,\n\u001b[0;32m 599\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout,\n\u001b[0;32m 600\u001b[0m chunked\u001b[38;5;241m=\u001b[39mchunked,\n\u001b[0;32m 601\u001b[0m )\n\u001b[0;32m 603\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:843\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[0;32m 841\u001b[0m new_e \u001b[38;5;241m=\u001b[39m ProtocolError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection aborted.\u001b[39m\u001b[38;5;124m\"\u001b[39m, new_e)\n\u001b[1;32m--> 843\u001b[0m retries \u001b[38;5;241m=\u001b[39m retries\u001b[38;5;241m.\u001b[39mincrement(\n\u001b[0;32m 844\u001b[0m method, url, error\u001b[38;5;241m=\u001b[39mnew_e, _pool\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m, _stacktrace\u001b[38;5;241m=\u001b[39msys\u001b[38;5;241m.\u001b[39mexc_info()[\u001b[38;5;241m2\u001b[39m]\n\u001b[0;32m 845\u001b[0m )\n\u001b[0;32m 846\u001b[0m retries\u001b[38;5;241m.\u001b[39msleep()\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\util\\retry.py:519\u001b[0m, in \u001b[0;36mRetry.increment\u001b[1;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[0;32m 518\u001b[0m reason \u001b[38;5;241m=\u001b[39m error \u001b[38;5;129;01mor\u001b[39;00m ResponseError(cause)\n\u001b[1;32m--> 519\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m MaxRetryError(_pool, url, reason) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mreason\u001b[39;00m \u001b[38;5;66;03m# type: ignore[arg-type]\u001b[39;00m\n\u001b[0;32m 521\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIncremented Retry for (url=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m): \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, url, new_retry)\n",
"\u001b[1;31mMaxRetryError\u001b[0m: HTTPConnectionPool(host='100.64.0.1', port=9000): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000016E573E2C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mConnectionError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[5], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m post(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttp://100.64.0.1:9000\u001b[39m\u001b[38;5;124m\"\u001b[39m,json\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdemo\u001b[39m\u001b[38;5;124m\"\u001b[39m:\u001b[38;5;241m1\u001b[39m},timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m)\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\api.py:115\u001b[0m, in \u001b[0;36mpost\u001b[1;34m(url, data, json, **kwargs)\u001b[0m\n\u001b[0;32m 103\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(url, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, json\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 104\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a POST request.\u001b[39;00m\n\u001b[0;32m 105\u001b[0m \n\u001b[0;32m 106\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 112\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[0;32m 113\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m request(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url, data\u001b[38;5;241m=\u001b[39mdata, json\u001b[38;5;241m=\u001b[39mjson, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[1;34m(method, url, **kwargs)\u001b[0m\n\u001b[0;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[0;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[0;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[0;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[1;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m session\u001b[38;5;241m.\u001b[39mrequest(method\u001b[38;5;241m=\u001b[39mmethod, url\u001b[38;5;241m=\u001b[39murl, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\sessions.py:589\u001b[0m, in \u001b[0;36mSession.request\u001b[1;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[0;32m 584\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 585\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[0;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[0;32m 587\u001b[0m }\n\u001b[0;32m 588\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[1;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msend(prep, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39msend_kwargs)\n\u001b[0;32m 591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\sessions.py:703\u001b[0m, in \u001b[0;36mSession.send\u001b[1;34m(self, request, **kwargs)\u001b[0m\n\u001b[0;32m 700\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[0;32m 702\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[1;32m--> 703\u001b[0m r \u001b[38;5;241m=\u001b[39m adapter\u001b[38;5;241m.\u001b[39msend(request, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 705\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[0;32m 706\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n",
"File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\adapters.py:622\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 618\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e\u001b[38;5;241m.\u001b[39mreason, _SSLError):\n\u001b[0;32m 619\u001b[0m \u001b[38;5;66;03m# This branch is for urllib3 v1.22 and later.\u001b[39;00m\n\u001b[0;32m 620\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m SSLError(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[1;32m--> 622\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[0;32m 624\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClosedPoolError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 625\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m(e, request\u001b[38;5;241m=\u001b[39mrequest)\n",
"\u001b[1;31mConnectionError\u001b[0m: HTTPConnectionPool(host='100.64.0.1', port=9000): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000016E573E2C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))"
]
}
],
"source": [
"post(\"http://100.64.0.1:9000\",json={\"demo\":1},timeout=5)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "0bd4b1cf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'e10adc3949ba59abbe56e057f20f883e'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def md5_encrypt(text:str):\n",
" \"\"\"将字符串转换为 MD5 32位小写格式\"\"\"\n",
" # 创建 MD5 对象\n",
" md5 = hashlib.md5()\n",
" # 将文本编码为字节并更新哈希\n",
" md5.update(text.encode('utf-8'))\n",
" # 返回十六进制哈希值的32位小写字符串\n",
" return md5.hexdigest()\n",
"md5_encrypt(\"123456\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6a1b2081",
"metadata": {},
"outputs": [],
"source": [
"# a5f7f040e35d5d21abbb8c40c0d26e07"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e2510ec4",
"metadata": {},
"outputs": [],
"source": [
"clientId = \"4a1c3f90c2d6483286a79d9e88cfaf0d\"\n",
"clientSecret = \"82743c825b3ba0d8671bef0a466b8eb9\"\n",
"proxy={\n",
" \"http\": \"http://127.0.0.1:8080\",\n",
" \"https\": \"http://127.0.0.1:8080\",\n",
"}\n",
"data={\n",
" \"clientId\":clientId,\n",
" \"clientSecret\":clientSecret,\n",
" \"username\":\"xtlft@qq.com\",\n",
" \"password\":md5_encrypt(\"Xia2431384218\"),\n",
"}\n",
"data = post(\"https://cnapi.ttlock.com/oauth2/token\",data=data).json()\n",
"access_token = data[\"access_token\"]\n",
"refresh_token = data[\"refresh_token\"]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "2057ad7b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'access_token': 'a5f7f040e35d5d21abbb8c40c0d26e07',\n",
" 'refresh_token': 'a486a831275bfabdb714471e4f363efc',\n",
" 'uid': 42665043,\n",
" 'openid': 1889897261,\n",
" 'scope': 'user,key,room',\n",
" 'token_type': 'Bearer',\n",
" 'expires_in': 7157645}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "f08fc123",
"metadata": {},
"outputs": [],
"source": [
"# access_token = 'a5f7f040e35d5d21abbb8c40c0d26e07'"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "319aa6d7",
"metadata": {},
"outputs": [],
"source": [
"keyId = \"244371333\""
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "43574c76",
"metadata": {},
"outputs": [],
"source": [
"import time"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "bacc8047",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'time' is not defined",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[6], line 7\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m#获取锁详情\u001b[39;00m\n\u001b[0;32m 2\u001b[0m lockId \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m8686987\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 3\u001b[0m get(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://cnapi.ttlock.com/v3/lock/detail \u001b[39m\u001b[38;5;124m\"\u001b[39m,params\u001b[38;5;241m=\u001b[39m{\n\u001b[0;32m 4\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccessToken\u001b[39m\u001b[38;5;124m\"\u001b[39m:access_token,\n\u001b[0;32m 5\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mclientId\u001b[39m\u001b[38;5;124m\"\u001b[39m:\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m4a1c3f90c2d6483286a79d9e88cfaf0d\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 6\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlockId\u001b[39m\u001b[38;5;124m\"\u001b[39m:lockId,\n\u001b[1;32m----> 7\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdate\u001b[39m\u001b[38;5;124m\"\u001b[39m:\u001b[38;5;28mint\u001b[39m(time\u001b[38;5;241m.\u001b[39mtime()\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m1000\u001b[39m),\n\u001b[0;32m 8\u001b[0m })\u001b[38;5;241m.\u001b[39mjson()\n",
"\u001b[1;31mNameError\u001b[0m: name 'time' is not defined"
]
}
],
"source": [
"#获取锁详情\n",
"lockId = \"8686987\"\n",
"get(\"https://cnapi.ttlock.com/v3/lock/detail \",params={\n",
" \"accessToken\":access_token,\n",
" \"clientId\":\"4a1c3f90c2d6483286a79d9e88cfaf0d\",\n",
" \"lockId\":lockId,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "raw",
"id": "7dedf19d",
"metadata": {
"vscode": {
"languageId": "raw"
}
},
"source": [
"参数\t类型\t描述\n",
"lockId\tInt\t锁ID\n",
"lockName\tString\t锁的蓝牙名称\n",
"lockAlias\tString\t锁别名\n",
"lockMac\tString\t锁mac地址\n",
"noKeyPwd\tString\t管理员钥匙会有,管理员键盘密码,管理员用该密码开门\n",
"electricQuantity\tInt\t锁电量\n",
"featureValue\tString\t锁特征值,用于表示锁支持的功能\n",
"timezoneRawOffset\tLong\t锁所在时区和UTC时区时间的差数,单位毫秒\n",
"modelNum\tString\t产品型号(用于固件升级)\n",
"hardwareRevision\tString\t硬件版本号(用于固件升级)\n",
"firmwareRevision\tString\t固件版本号(用于固件升级)\n",
"autoLockTime\tInt\t自动闭锁时间(单位秒),-1代表关闭自动闭锁\n",
"lockSound\tInt\t锁声音开关:0-未知、1-开启、2-关闭\n",
"privacyLock\tInt\t反锁开关:0-未知、1-开启、2-关闭\n",
"tamperAlert\tInt\t防撬开关:0-未知、1-开启、2-关闭\n",
"resetButton\tInt\t重置按键开关:0-未知、1-开启、2-关闭\n",
"openDirection\tInt\t开门方向:0-未知、1-左开、2-右开\n",
"passageMode\tInt\t常开模式:1-开启、2-关闭\n",
"passageModeAutoUnlock\tInt\t常开模式自动开锁开关:1-开启、2-关闭\n",
"date\tLong\t锁初始化时间(时间戳,单位毫秒)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "09220069",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:1099: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/plain": [
"'{\"errcode\":-3,\"errmsg\":\"Invalid Parameter.\",\"description\":\"参数不合法。\"}'"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#更新锁数据\n",
"post(\"https://cnapi.ttlock.com/v3/lock/updateLockData\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"date\":int(time.time()*1000),\n",
" \"lockData\":''\n",
" \n",
"},proxies=proxy,verify=False\n",
").text"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "e145def9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'errcode': 0,\n",
" 'errmsg': 'none error message or means yes',\n",
" 'description': '表示成功或是'}"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#开锁\n",
"post(\"https://cnapi.ttlock.com/v3/lock/unlock\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "b468215d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'errcode': 0,\n",
" 'errmsg': 'none error message or means yes',\n",
" 'description': '表示成功或是'}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#关锁\n",
"post(\"https://cnapi.ttlock.com/v3/lock/lock\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "dc22e9bb",
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime\n",
"import time"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "94899018",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'2025-09-11 16:25:45'"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#校准时间\n",
"data = post(\"https://cnapi.ttlock.com/v3/lock/updateDate\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"date\":int(time.time()*1000),\n",
"},timeout=10).json()\n",
"datetime.fromtimestamp(data['date']/1000).strftime('%Y-%m-%d %H:%M:%S')"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "e6f88196",
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "'electricQuantity'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[32], line 9\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m#查询电量\u001b[39;00m\n\u001b[0;32m 2\u001b[0m data \u001b[38;5;241m=\u001b[39m get(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://cnapi.ttlock.com/v3/lock/queryElectricQuantity\u001b[39m\u001b[38;5;124m\"\u001b[39m,params\u001b[38;5;241m=\u001b[39m{\n\u001b[0;32m 3\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mclientId\u001b[39m\u001b[38;5;124m\"\u001b[39m:clientId,\n\u001b[0;32m 4\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccessToken\u001b[39m\u001b[38;5;124m\"\u001b[39m:access_token,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 7\u001b[0m }\n\u001b[0;32m 8\u001b[0m )\u001b[38;5;241m.\u001b[39mjson()\n\u001b[1;32m----> 9\u001b[0m electricQuantity \u001b[38;5;241m=\u001b[39m data[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124melectricQuantity\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 10\u001b[0m electricQuantity\n",
"\u001b[1;31mKeyError\u001b[0m: 'electricQuantity'"
]
}
],
"source": [
"#查询电量\n",
"data = get(\"https://cnapi.ttlock.com/v3/lock/queryElectricQuantity\",params={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"date\":int(time.time()*1000),\n",
"}\n",
").json()\n",
"electricQuantity = data['electricQuantity']\n",
"electricQuantity"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "74e233b6",
"metadata": {},
"outputs": [],
"source": [
"def getTimeStamp(date):\n",
" return int(datetime.strptime(date,\"%Y-%m-%d %H:%M:%S\").timestamp()*1000)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c2f70256",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'total': 14,\n",
" 'pages': 1,\n",
" 'pageNo': 1,\n",
" 'pageSize': 100,\n",
" 'list': [{'recordId': 1963990433,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757579128000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757579106000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963989469,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757579099000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757579088000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963989457,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757579098000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757579077000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963969537,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578767000,\n",
" 'recordTypeFromLock': 1,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 1,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578763000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963963397,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578644000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578625000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963944763,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578368000,\n",
" 'recordTypeFromLock': 26,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 11,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578333000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963944755,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578367000,\n",
" 'recordTypeFromLock': 26,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 11,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578324000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963940805,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578293000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578278000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963940781,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578292000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578246000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963938539,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757578250000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757578233000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963921293,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757577937000,\n",
" 'recordTypeFromLock': 28,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 12,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757577919000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963811969,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757575916000,\n",
" 'recordTypeFromLock': 1,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 1,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757575914000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963637709,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757572596000,\n",
" 'recordTypeFromLock': 1,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 1,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757572594000,\n",
" 'username': 'xtlft@qq.com'},\n",
" {'recordId': 1963066001,\n",
" 'lockId': 8686987,\n",
" 'serverDate': 1757562495000,\n",
" 'recordTypeFromLock': 1,\n",
" 'hotelUsername': 'xtlft@qq.com',\n",
" 'recordType': 1,\n",
" 'success': 1,\n",
" 'keyName': 'xtlft',\n",
" 'keyboardPwd': '',\n",
" 'lockDate': 1757562493000,\n",
" 'username': 'xtlft@qq.com'}]}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#锁操作记录\n",
"get(\"https://cnapi.ttlock.com/v3/lockRecord/list\",params={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"startDate\":getTimeStamp(\"2025-09-01 16:34:38\"),\n",
" \"endDate\":getTimeStamp(\"2025-09-11 16:34:38\"),\n",
" \"pageNo\":1,\n",
" \"pageSize\":100,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "44928c5b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'cardId': 114762009}"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"https://cnapi.ttlock.com/v3/identityCard/addForReversedCardNumber\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"cardNumber\":\"0022818748\",\n",
" \"cardName\":\"测试\",\n",
" \"startDate\":0,\n",
" \"endDate\":0,\n",
" \"addType\":2,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "e932d4d7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'total': 1, 'pages': 1, 'pageNo': 1, 'pageSize': 100, 'list': [{'lockId': 8686987, 'cardName': '测试', 'endDate': 0, 'nickName': 'xtlft', 'cardId': 114762009, 'cardType': 1, 'userId': 'xtlft@qq.com', 'cardNumber': '3157220353', 'startDate': 0, 'senderUsername': 'xtlft@qq.com', 'createDate': 1758193960000, 'status': 1}]}\n"
]
},
{
"data": {
"text/plain": [
"[{'lockId': 8686987,\n",
" 'cardName': '测试',\n",
" 'endDate': 0,\n",
" 'nickName': 'xtlft',\n",
" 'cardId': 114762009,\n",
" 'cardType': 1,\n",
" 'userId': 'xtlft@qq.com',\n",
" 'cardNumber': '3157220353',\n",
" 'startDate': 0,\n",
" 'senderUsername': 'xtlft@qq.com',\n",
" 'createDate': 1758193960000,\n",
" 'status': 1}]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = get(\"https://cnapi.ttlock.com/v3/identityCard/list\",params={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"pageNo\":1,\n",
" \"pageSize\":100,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()\n",
"print(data)\n",
"data = data[\"list\"]\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "35862495",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'a5f7f040e35d5d21abbb8c40c0d26e07'"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"access_token"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "68e2902a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'cardId': 114619437}"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"https://cnapi.ttlock.com/v3/identityCard/addForReversedCardNumber\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"cardNumber\":\"0022818748\",\n",
" \"cardName\":\"夏天乐带0\",\n",
" \"startDate\":0,\n",
" \"endDate\":0,\n",
" \"addType\":2,\n",
" \"date\":int(time.time()*1000), \n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "2648d614",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'keyboardPwdId': 96034855}"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"https://cnapi.ttlock.com/v3/keyboardPwd/add\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"keyboardPwd\":\"123456\",\n",
" \"keyboardPwdName\":\"密码测试\",\n",
" \"keyboardPwdType\":2,\n",
" \"addType\":2,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "e3cf6773",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'{\"errcode\":0,\"errmsg\":\"none error message or means yes\",\"description\":\"表示成功或是\"}'"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"https://cnapi.ttlock.com/v3/keyboardPwd/change\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"keyboardPwdId\":96034855,\n",
" \"newKeyboardPwd\":12345677,\n",
" \"date\":int(time.time()*1000),\n",
"}).text"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "4867c3d0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'list': [], 'pageNo': 1, 'pageSize': 100, 'pages': 0, 'total': 0}"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get(\"https://cnapi.ttlock.com/v3/lock/listKeyboardPwd\",params={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"pageNo\":1,\n",
" \"pageSize\":100,\n",
" \"orderBy\":1,\n",
" \"date\":int(time.time()*1000),\n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f88d7466",
"metadata": {},
"outputs": [],
"source": [
"post('https://cnapi.ttlock.com/v3/keyboardPwd/delete',data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"keyboardPwdId\":96034855,\n",
" \"date\":int(time.time()*1000),\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "1ad482fb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'cardId': 114339443}"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"https://cnapi.ttlock.com/v3/identityCard/addForReversedCardNumber\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":lockId,\n",
" \"cardNumber\":\"1869101204\",\n",
" \"cardName\":\"夏天乐手\",\n",
" \"startDate\":0,\n",
" \"endDate\":0,\n",
" \"addType\":2,\n",
" \"date\":int(time.time()*1000),\n",
" \n",
"}).json()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5bc719db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'total': 0, 'pages': 0, 'pageNo': 1, 'pageSize': 100, 'list': []}\n"
]
},
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "6b6bdff5",
"metadata": {},
"outputs": [],
"source": [
"#3157220353"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "ceba3e0f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'errcode': 0, 'errmsg': 'none error message or means yes', 'description': '表示成功或是'}\n"
]
}
],
"source": [
"for item in data:\n",
" \n",
" #删除卡,\n",
" tem = post(\"https://cnapi.ttlock.com/v3/identityCard/delete\",data={\n",
" \"clientId\":clientId,\n",
" \"accessToken\":access_token,\n",
" \"lockId\":int(item[\"lockId\"]),\n",
" \"cardId\":int(item[\"cardId\"]),\n",
" \"deleteType\":2,\n",
" \"date\":int(time.time()*1000),\n",
" }).json()\n",
" print(tem)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "7f532bb4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'{\\n \"received_data\": {\\n \"demo\": 1\\n },\\n \"received_headers\": {\\n \"Accept\": \"*/*\",\\n \"Accept-Encoding\": \"gzip, deflate, br, zstd\",\\n \"Connection\": \"close\",\\n \"Content-Length\": \"11\",\\n \"Content-Type\": \"application/json\",\\n \"Host\": \"www.xtleto.cn\",\\n \"User-Agent\": \"python-requests/2.32.2\",\\n \"X-Forwarded-For\": \"183.220.92.154\",\\n \"X-Real-Ip\": \"183.220.92.154\"\\n },\\n \"status\": \"success\"\\n}\\n'"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post(\"https://www.xtleto.cn:1314/demo\",json={\"demo\":1},timeout=10).text"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "06f7ab74",
"metadata": {},
"outputs": [],
"source": [
"post(\"https://example.com/lockRecord/callback\",data={\n",
" \"notifyType\":1,\n",
" \"lockId\":lockId,\n",
" \n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}