{"id":144,"date":"2018-05-14T09:52:08","date_gmt":"2018-05-14T01:52:08","guid":{"rendered":"http:\/\/blog.qiaogen.com\/?p=144"},"modified":"2018-05-14T09:54:38","modified_gmt":"2018-05-14T01:54:38","slug":"%e8%bd%ac%e8%bd%bdopenwrt%e4%bd%bf%e7%94%a8wifidog%e5%ae%9e%e7%8e%b0%e5%bc%ba%e5%88%b6%e8%ae%a4%e8%af%81%e7%9a%84wifi%e7%83%ad%e7%82%b9","status":"publish","type":"post","link":"https:\/\/www.sangqiao.com\/blog\/archives\/144","title":{"rendered":"[\u8f6c\u8f7d]OpenWRT\u4f7f\u7528wifidog\u5b9e\u73b0\u5f3a\u5236\u8ba4\u8bc1\u7684WIFI\u70ed\u70b9"},"content":{"rendered":"<p><span lang=\"zh-CN\">\u9996\u5148\u5b89\u88c5<span lang=\"en-US\">wifidog\u5230OpenWRT\u7684\u8def\u7531\u5668\uff1a<\/span><\/span><\/p>\n<p lang=\"en-US\">\u00a0 opkg update<\/p>\n<p lang=\"en-US\">\u00a0 opkg install wifidog<\/p>\n<p><span lang=\"en-US\">wifidog<span lang=\"zh-CN\">\u4f9d\u8d56\u4e0b\u9762\u8fd9\u4e9b\u6a21\u5757\uff1a<\/span><\/span><\/p>\n<p lang=\"en-US\">iptables-mod-extra<\/p>\n<p lang=\"en-US\">iptables-mod-ipopt<\/p>\n<p lang=\"en-US\">kmod-ipt-nat<\/p>\n<p lang=\"en-US\">iptables-mod-nat-extra<\/p>\n<p lang=\"en-US\">libpthread<\/p>\n<p><span lang=\"zh-CN\">\u7531\u4e8e<span lang=\"en-US\">trunk\u7684\u56fa\u4ef6\u66f4\u65b0\u4f1a\u6bd4\u8f83\u9891\u7e41\uff0c\u4f1a\u5bfc\u81f4\u76f4\u63a5opkg install wifidog\u5b89\u88c5\u4e0d\u4e86\uff0c\u5982\u679c\u4f60\u51d1\u5de7\u53c8\u6ca1\u6709\u5907\u4efd\u4e0e\u56fa\u4ef6\u5bf9\u5e94\u7684Packages\u7684\u8bdd\uff0c\u5c31\u9700\u8981\u5230<a href=\"http:\/\/downloads.openwrt.org\/snapshots\/trunk\">http:\/\/downloads.openwrt.org\/snapshots\/trunk<\/a>\u5347\u7ea7\u56fa\u4ef6\uff0c\u7136\u540e\u518d\u5b89\u88c5wifidog\u3002\u6211\u5907\u4efd\u4e86\u4e00\u4e2a2013\u5e747\u6708\u4efd(kernel =3.10.3-1-9da5017d589c0594e545ab00a51eecea)\u7684\u7248\u672c\u7684Packages\uff0c\u9700\u8981\u7684\u8bdd\u62ff\u53bb\u7528:<\/span><\/span><\/p>\n<p lang=\"en-US\"><span lang=\"en-US\"><a href=\"http:\/\/openwrt.sinapp.net\/\">http:\/\/openwrt.sinapp.net<\/a><\/span><\/p>\n<p><span lang=\"zh-CN\">\u5982\u679c\u4f60\u7684\u8def\u7531\u5668\u4e0d\u662f<span lang=\"en-US\">openwrt\u5b98\u65b9\u652f\u6301\u7684\u7248\u672c\u7684\u8bdd\uff0c\u90a3\u5c31\u9700\u8981\u81ea\u5df1\u7f16\u8bd1\u56fa\u4ef6\u3002make menuconfig\u540e\uff0c\u5728Network\u2013&gt;Captive Portals\u4e2d\u9009\u62e9wifidog.<\/span><\/span><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-204\" src=\"http:\/\/files.sinappel.com\/2013\/12\/wifidog1.png?w=630&amp;h=486\" alt=\"wifidog1\" width=\"630\" height=\"486\" \/><\/p>\n<p>\u5b89\u88c5\u5b8c\u6210\u540e\uff0c<\/p>\n<p lang=\"en-US\">\/etc\/init.d\/wifidog enable<\/p>\n<p lang=\"en-US\">\/etc\/init.d\/wifidog start<\/p>\n<p><span lang=\"zh-CN\">\u8fd9\u65f6\u4f1a\u629b\u51fa\u4e00\u4e2a\u9519\u8bef\uff0c\u56e0\u4e3a\u6211\u4eec\u8fd8\u6ca1\u6709\u8bbe\u7f6e<span lang=\"en-US\">AuthServer\u7684\u4fe1\u606f\u3002\u5173\u4e8e\u5b89\u88c5wifidog\u66f4\u591a\u7684\u4fe1\u606f\u53ef\u4ee5\u53c2\u8003\uff1a<a href=\"http:\/\/wiki.openwrt.org\/doc\/howto\/wireless.hotspot.wifidog\">http:\/\/wiki.openwrt.org\/doc\/howto\/wireless.hotspot.wifidog<\/a><\/span><\/span><\/p>\n<p><span lang=\"zh-CN\">\u4e0b\u9762\u5b89\u88c5<span lang=\"en-US\">Auth Server\uff0c\u6309\u7167\u5b98\u65b9\u7684\u8bf4\u6cd5\uff1a<\/span><\/span><\/p>\n<p lang=\"en-US\">AuthPuppy is the next generation authentication server for Wifidog networks.<\/p>\n<p><span lang=\"zh-CN\">\u6e90\u6587\u6863<span lang=\"en-US\">\u00a0&lt;<a href=\"http:\/\/www.authpuppy.org\/\">http:\/\/www.authpuppy.org\/<\/a>&gt;<\/span><\/span><\/p>\n<p><span lang=\"zh-CN\">\u4e0d\u8fc7\u8c8c\u4f3c\u8fd9<span lang=\"en-US\">wifidog\u548cAuthpuppy\u90fd\u5df2\u7ecfN\u4e45\u6ca1\u66f4\u65b0\u4e86\u3002\u3002\u3002\u00a0<\/span><\/span><\/p>\n<p><span lang=\"zh-CN\">\u00a0<\/span><\/p>\n<p><span lang=\"en-US\">AuthPutty<span lang=\"zh-CN\">\u662f\u9700\u8981\u5b89\u88c5apache2, php5\u548cMy<span class=\"wp_keywordlink_affiliate\"><a title=\"SQL\" href=\"http:\/\/www.mikel.cn\/tag\/sql\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQL<\/a>\u3002\u8be6\u7ec6\u4ecb\u7ecd\u5728\u8fd9\u91cc\uff1a<a href=\"http:\/\/www.authpuppy.org\/doc\/Getting_Started\">http:\/\/www.authpuppy.org\/doc\/Getting_Started<\/a>\u00a0(Windows\u7248\u70b9<a href=\"http:\/\/www.authpuppy.org\/doc\/Getting_Started_-_Windows\">\u8fd9\u91cc<\/a>)\u3002<\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u5b89\u88c5\u6210\u529f\u540e\uff0c\u8bbf\u95ee<span lang=\"en-US\">AuthPuppy\u4f1a\u8981\u6c42\u8bbe\u7f6e\u4e00\u4e9b\u6570\u636e\u5e93\u4fe1\u606f\uff0c\u5168\u90e8\u8bbe\u7f6e\u5b8c\u6210\u540e\u80fd\u770b\u5230\u9996\u9875\uff1a<\/span><\/span><\/p>\n<p><img loading=\"lazy\" src=\"http:\/\/files.sinappel.com\/2013\/12\/wifidog2.jpg?w=576&amp;h=184\" alt=\"wifidog2\" width=\"576\" height=\"184\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u5f53\u7136\u4e86\uff0c\u6211\u4eec\u8fd8\u9700\u8981\u8bbe\u7f6e\u7ba1\u7406\u5458\u7684\u8d26\u53f7\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u8fdb\u5165<span lang=\"en-US\">Manage plugins\uff0cInstall apAuthLocalUserPlugin\uff0c\u8bb0\u5f97\u8981enable\u8fd9\u4e2a\u63d2\u4ef6\u3002<\/span><\/span><\/p>\n<p><img loading=\"lazy\" src=\"http:\/\/files.sinappel.com\/2013\/12\/wifidog3.png?w=630&amp;h=412\" alt=\"wifidog3\" width=\"630\" height=\"412\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u7136\u540e\uff0c\u70b9\u51fb<span lang=\"en-US\">Manage Nodes\uff0c\u628a\u9ed8\u8ba4\u8282\u70b9\u7684status\u6539\u6210deployed\u3002\u8fd9\u4e2aGW(Gateway) ID default\u540e\u9762\u914d\u7f6ewifidog.conf\u7684\u65f6\u5019\u9700\u8981\u4f7f\u7528\u3002<\/span><\/span><\/p>\n<p><img loading=\"lazy\" src=\"http:\/\/files.sinappel.com\/2013\/12\/wifidog4.png?w=630&amp;h=537\" alt=\"wifidog4\" width=\"630\" height=\"537\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u5230\u8fd9\u91cc\uff0c<span lang=\"en-US\">AuthPuppy\u5c31\u57fa\u672c\u914d\u7f6e\u5b8c\u6bd5\u4e86\u3002<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u4e0b\u9762\u56de\u5230\u8def\u7531\u5668\uff0c\u7f16\u8f91<span lang=\"en-US\">wifidog.conf\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4e4b\u540e\u914d\u7f6eExternalInterface\uff0cGatewayInterface\u548cAuthServer\u8fd9\u4e09\u9879\u5c31\u53ef\u4ee5\uff0c\u5176\u4ed6\u9ed8\u8ba4\u3002\u4e0b\u9762\u662f\u6211\u7684\u914d\u7f6e\uff1a<\/span><\/span><\/p>\n<p><span lang=\"en-US\">GatewayIDdefault\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #<span lang=\"zh-CN\">\u6ce8\u610f\u8fd9\u4e2aID\u5fc5\u987b\u8ddfAuthPuppy\u7684GW ID\u4e00\u81f4<\/span><\/span><\/p>\n<p lang=\"en-US\"># Parameter: ExternalInterface<\/p>\n<p lang=\"en-US\"># Default: NONE<\/p>\n<p lang=\"en-US\"># Optional<\/p>\n<p lang=\"en-US\">#<\/p>\n<p lang=\"en-US\"># Set this to the external interface (the one going out to the Inernet or your larger LAN).<\/p>\n<p lang=\"en-US\"># Typically vlan1 for OpenWrt, and eth0 or ppp0 otherwise,<\/p>\n<p lang=\"en-US\"># Normally autodetected<\/p>\n<p><span lang=\"en-US\">ExternalInterface\u00a0eth0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#<span lang=\"zh-CN\">\u8def\u7531\u5668\u5916\u7f51\u7684\u7269\u7406\u63a5\u53e3<\/span><\/span><\/p>\n<p lang=\"en-US\"># Parameter: GatewayInterface<\/p>\n<p lang=\"en-US\"># Default: NONE<\/p>\n<p lang=\"en-US\"># Mandatory<\/p>\n<p lang=\"en-US\">#<\/p>\n<p lang=\"en-US\"># Set this to the internal interface (typically your wifi interface).<\/p>\n<p lang=\"en-US\"># Typically br-lan for OpenWrt, and eth1, wlan0, ath0, etc. otherwise<\/p>\n<p><span lang=\"en-US\">GatewayInterface\u00a0wlan0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#<span lang=\"zh-CN\">\u8def\u7531\u5668\u5185\u7f51\u7684\u7269\u7406\u63a5\u53e3<\/span><\/span><\/p>\n<p lang=\"en-US\">AuthServer {<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 Hostname 192.170.1.104<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 SSLAvailable no<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 Path \/<\/p>\n<p lang=\"en-US\"><span lang=\"en-US\">\u00a0<\/span><\/p>\n<p lang=\"en-US\">CheckInterval 60<\/p>\n<p lang=\"en-US\">ClientTimeout 5<\/p>\n<p lang=\"en-US\">FirewallRuleSet global {<\/p>\n<p lang=\"en-US\">}<\/p>\n<p lang=\"en-US\">FirewallRuleSet validating-users {<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule allow to 0.0.0.0\/0<\/p>\n<p lang=\"en-US\">}<\/p>\n<p lang=\"en-US\">FirewallRuleSet known-users {<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule allow to 0.0.0.0\/0<\/p>\n<p lang=\"en-US\">}<\/p>\n<p lang=\"en-US\">FirewallRuleSet unknown-users {<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule allow udp port 53<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule allow tcp port 53<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule allow udp port 67<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule allow tcp port 67<\/p>\n<p lang=\"en-US\">}<\/p>\n<p lang=\"en-US\">FirewallRuleSet locked-users {<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0 FirewallRule block to 0.0.0.0\/0<\/p>\n<p lang=\"en-US\">}<\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u6ce8\u610f\u8fd9\u4e2a<span lang=\"en-US\">Interface\u662f\u7269\u7406\u63a5\u53e3\uff0c\u800c\u4e0d\u662f\u4e0b\u9762OpenWRT web\u754c\u9762\u4e2d\u770b\u5230\u7684interface\u3002\u6ce8\u610f\u4e0d\u662f\u4e0b\u9762\u8fd9\u4e2a\uff1a<\/span><\/span><\/p>\n<p><img loading=\"lazy\" src=\"http:\/\/files.sinappel.com\/2013\/12\/wifidog5.png?w=573&amp;h=364\" alt=\"wifidog5\" width=\"573\" height=\"364\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u53ef\u4ee5\u770b\u5230\u6211\u7684<span lang=\"en-US\">Interface\u91cc\u9762\u6ca1\u6709wlan0\u4e4b\u7c7b\u7684\u9009\u9879\uff0c\/etc\/config\/network\u91cc\u9762\u4e5f\u770b\u4e0d\u5230\u3002<\/span><\/span><\/p>\n<p lang=\"en-US\">root@OpenWrt:~# cat \/etc\/config\/network<\/p>\n<p lang=\"en-US\">config interface \u2018loopback\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option ifname \u2018lo\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option proto \u2018static\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option ipaddr \u2018127.0.0.1\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option netmask \u2018255.0.0.0\u2019<\/p>\n<p lang=\"en-US\">config globals \u2018globals\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option ula_prefix \u2018fd09:fd03:490d::\/48\u2032<\/p>\n<p lang=\"en-US\">config interface \u2018lan\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option proto \u2018static\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option ipaddr \u2018192.168.1.1\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option netmask \u2018255.255.255.0\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option ip6assign \u201960\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option _orig_ifname \u2018eth0\u2032<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option _orig_bridge \u2018false\u2019<\/p>\n<p lang=\"en-US\">config interface \u2018WAN\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option proto \u2018dhcp\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option _orig_ifname \u2018gretap0\u2032<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option _orig_bridge \u2018false\u2019<\/p>\n<p lang=\"en-US\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 option ifname \u2018eth0\u2032<\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u4e4b\u524d\u6211\u7528<span lang=\"en-US\">gretap0\u548ceth0\u8bbe\u7f6eExternalInterface\u548cGatewayInterface\uff0c\u4e0d\u884c\u3002\u53cd\u7740\u6765\u4e5f\u4e0d\u884c\u3002\u7f51\u4e0a\u641c\u4e86\u4e00\u5708\uff0c\u627e\u5230\u4e0b\u9762\u7684\u65b9\u6cd5\u6765\u83b7\u53d6physical interface\uff1a<\/span><\/span><\/p>\n<p lang=\"en-US\">root@OpenWrt:~# ls -l \/sys\/class\/net<\/p>\n<p lang=\"en-US\">lrwxrwxrwx\u00a0\u00a0\u00a0 1 root\u00a0\u00a0\u00a0\u00a0 root\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0 Jan\u00a0 1\u00a0 1970 eth0 -&gt; ..\/..\/devices\/platform\/ag71xx.0\/net\/eth0<\/p>\n<p lang=\"en-US\">lrwxrwxrwx\u00a0\u00a0\u00a0 1 root\u00a0\u00a0\u00a0\u00a0 root\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0 Jan\u00a0 1\u00a0 1970 lo -&gt; ..\/..\/devices\/virtual\/net\/lo<\/p>\n<p lang=\"en-US\">lrwxrwxrwx\u00a0\u00a0\u00a0 1 root\u00a0\u00a0\u00a0\u00a0 root\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0 Aug\u00a0 2 15:58 wlan0 -&gt; ..\/..\/devices\/platform\/ar933x_wmac\/net\/wlan0<\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"zh-CN\">\u6e90\u6587\u6863<span lang=\"en-US\">\u00a0&lt;<a href=\"http:\/\/unix.stackexchange.com\/questions\/57309\/how-can-i-tell-whether-a-network-interface-is-physical-device-or-virtual-alia\">http:\/\/unix.stackexchange.com\/questions\/57309\/how-can-i-tell-whether-a-network-interface-is-physical-device-or-virtual-alia<\/a>&gt;<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"en-US\">\u00a0OK<span lang=\"zh-CN\">\uff0c\u539f\u6765\u6211\u8fd9\u8fb9\u4e5f\u662f\u6709wlan0\u8fd9\u4e2ainterface\u7684\uff0c\u627e\u5230\u4e4b\u540e\u6dfb\u52a0\u5728wifidog.conf\u4e0a\u3002\u91cd\u542fwifidog\uff0c\u6210\u529f\u3002<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p>\u53e6\u5916\uff1a<\/p>\n<p lang=\"en-US\">You can also run wifidog in foreground\/<span class=\"wp_keywordlink_affiliate\"><a title=\"Debug\" href=\"http:\/\/www.mikel.cn\/tag\/debug\" target=\"_blank\" rel=\"noopener noreferrer\">Debug<\/a>\u00a0mode:<\/span><\/p>\n<p lang=\"en-US\">wifidog -f -d 7<\/p>\n<p lang=\"en-US\">\u00a0 -f means to run in foreground (do not become a background daemon)<\/p>\n<p lang=\"en-US\">\u00a0 -d 7 increases\u00a0<span class=\"wp_keywordlink_affiliate\"><a title=\"Debug\" href=\"http:\/\/www.mikel.cn\/tag\/debug\" target=\"_blank\" rel=\"noopener noreferrer\">Debug<\/a>\u00a0output level to the maximum<\/span><\/p>\n<p lang=\"en-US\">\u539f\u6587\u5730\u5740\uff1ahttps:\/\/www.cnblogs.com\/hiker-blogs\/p\/4248967.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148\u5b89\u88c5wifidog\u5230OpenWRT\u7684\u8def\u7531\u5668\uff1a \u00a0 opkg update \u00a0 opkg install w [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts\/144"}],"collection":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/comments?post=144"}],"version-history":[{"count":2,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":148,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/posts\/144\/revisions\/148"}],"wp:attachment":[{"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/media?parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/categories?post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sangqiao.com\/blog\/wp-json\/wp\/v2\/tags?post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}