{ "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": [ "" ] }, "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(': 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: : 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(': 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(': 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 }