โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็จๆทๆต่งๅจ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๐ Leafletๅฐๅพ (visitor-tracker.js) โ โ
โ โ - ๅ ่ฝฝOSMๅฐๅพ็ฆ็ โ โ
โ โ - ็ปๅถ่ฎฟ้ฎ่
ไฝ็ฝฎๆ ่ฎฐ โ โ
โ โ - ่ๅๅๅๅธ่ฎฟ้ฎ่
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ่ทๅIPๅฐ็ไฟกๆฏ โ ่ฏปๅๅๅฒๆฐๆฎ โ
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ ip-api.com API โ โ GitHub Gist โ โ
โ โ (ๅ
่ดนๅฐ็ๅฎไฝ) โ โ (ๅ
ฌๅผ่ฎฟ้ฎ่ฏป) โ โ
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ ่ทๅๅฝๅไฝ็ฝฎ ่ทๅๆๆ่ฎฟ้ฎ่
ๆฐๆฎ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ้กต้ขๅ ่ฝฝๅฎๆ โ ๅ้POST่ฏทๆฑๅฐๅ็ซฏ โ โ
โ โ (country, city, latitude, longitude, ip) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ HTTPS
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Vercel Edge Network โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๐ Serverless Function (/api/track-visitor.js) โ โ
โ โ - ้ช่ฏ่ฏทๆฑๆฐๆฎ โ โ
โ โ - ่ทๅๅฝๅGistๅ
ๅฎน โ โ
โ โ - ๆทปๅ ๆฐ่ฎฟ้ฎ่ฎฐๅฝ โ โ
โ โ - ๆดๆฐGist โ โ
โ โ - ่ฟๅๆๅๅๅบ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ (ไฝฟ็จGitHub Token)
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GitHub API โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๐๏ธ GitHub Gist (ๆฐๆฎๅญๅจ) โ โ
โ โ โ โ
โ โ { โ โ
โ โ "visitors": [ โ โ
โ โ { โ โ
โ โ "timestamp": "2025-10-22T10:30:00Z", โ โ
โ โ "country": "China", โ โ
โ โ "city": "Hangzhou", โ โ
โ โ "latitude": 30.2741, โ โ
โ โ "longitude": 120.1551, โ โ
โ โ "ip_hash": "a1b2c3d4" โ โ
โ โ }, โ โ
โ โ ...ๆดๅค่ฎฟ้ฎ่
... โ โ
โ โ ], โ โ
โ โ "updated_at": "2025-10-22T10:30:00Z" โ โ
โ โ } โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
็จๆทๆๅผ็ฝ็ซ
โ
footerๅ ่ฝฝLeafletๅบ
โ
ๆง่กvisitor-tracker.js
โ
ๅๅงๅๅฐๅพ๏ผๆพ็คบๅ
จ็่งๅพ๏ผ
โ
ๅนถ่กๆง่กไธไธชๆไฝ๏ผ
โโ ่ทๅ็จๆทIPๅฐ็ไฟกๆฏ (ip-api.com)
โโ ่ฏปๅๅๅฒ่ฎฟ้ฎๆฐๆฎ (Gist Raw URL)
โโ ๆ ่ฎฐๅฝๅไฝ็ฝฎ๏ผ็บข่ฒ่็บฟๅๅ๏ผ
โ
่ๅๅๅฒๆฐๆฎไธญ็ๅๅธไฟกๆฏ
โ
็ปๅถๅๅฝขๆ ่ฎฐๅฐๅฐๅพ
โโ ๆ ่ฎฐๅคงๅฐ โ ่ฎฟ้ฎไบบๆฐ
โโ ๆ ่ฎฐ้ข่ฒ ไป่โ็บข๏ผไบบๆฐ่ถๅค่ถ็บข๏ผ
โโ ๅผน็ชๆพ็คบๅๅธๅๅ่ฎฟ้ฎๆฐ
โ
ๆดๆฐ็ป่ฎกไฟกๆฏ
โโ ๆป่ฎฟ้ฎ่
ๆฐ
โโ ๆปๅฝๅฎถๆฐ
โ
ๅผๆญฅๅ้ๆฐ่ฎฟ้ฎ่ฎฐๅฝๅฐๅ็ซฏ
โ
ๅ็ซฏๆดๆฐGist
โ
ๅฎๆ
ๅ็ซฏPOST่ฏทๆฑๅฐ /api/track-visitor
โ
Vercel Functionๅค็่ฏทๆฑ
โโ ้ช่ฏHTTPๆนๆณ๏ผๅฟ
้กปๆฏPOST๏ผ
โโ ้ช่ฏๅฟ
ๅกซๅญๆฎต
โโ ๆฃๆฅ็ฏๅขๅ้
โ
ๆๅ โ ็ปง็ปญ๏ผๅคฑ่ดฅ โ ่ฟๅ้่ฏฏ
โ
่ฐ็จGitHub API่ทๅๅฝๅGistๅ
ๅฎน
โโ ไฝฟ็จ GITHUB_TOKEN ่ฎค่ฏ
โโ ่ทๅgist/{GIST_ID}
โ
่งฃๆGist JSONๆฐๆฎ
โ
ๆฐๅปบ่ฎฟ้ฎ่
่ฎฐๅฝ
โโ timestamp: ๅฝๅๆถ้ด
โโ country: ๅฝๅฎถ
โโ city: ๅๅธ
โโ latitude: ็บฌๅบฆ
โโ longitude: ็ปๅบฆ
โโ ip_hash: IPๅๅธ๏ผไฟๆค้็ง๏ผ
โ
ๆทปๅ ๅฐvisitorsๆฐ็ป
โ
ๅฏ้๏ผๅฆๆ่ถ
่ฟ1000ๆก่ฎฐๅฝ๏ผๅ ้คๆๆง็
โ
่ฐ็จGitHub APIๆดๆฐGist
โโ ไฝฟ็จPATCHๆนๆณ
โโ ๅ้ๆฐ็JSONๅ
ๅฎน
โโ ๆทปๅ ๆดๆฐๆถ้ดๆณ
โ
่ฟๅๆๅๅๅบ็ปๅ็ซฏ
โโ success: true
โโ message: ๆ่ฟฐไฟกๆฏ
โโ visitorCount: ๅฝๅๆปๆฐ
โ
ๅฎๆ
็จๆทIP: 192.168.1.100
โ (hashIPๅฝๆฐ)
IPๅๅธ: a1b2c3d4e5f6g7h8
โ
ๅญๅจๅฐGistไธญ
GitHub Token: ghp_xxx...xxx
โ
ๅญๅจๅจ โ Vercel Environment Variables
โ
ไป
ๆๅกๅจๅฏ่ฎฟ้ฎ โ ๅ็ซฏๆ ๆณ่ทๅ
โ
ไฝฟ็จBearer่ฎค่ฏ โ GitHub API
ๅ็ซฏ่ฏทๆฑ โ ๅ็ซฏFunction
โ
ๆฃๆฅHTTPๆนๆณ๏ผๅฟ
้กปPOST๏ผ
โ
ๆฃๆฅๅฟ
ๅกซๅญๆฎต๏ผ
โโ country: ๅฝๅฎถ
โโ city: ๅๅธ
โโ latitude: ็บฌๅบฆ
โโ longitude: ็ปๅบฆ
โ
้ช่ฏ็ฏๅขๅ้
โ
ๆง่กๆดๆฐ
็จๆท่ฎฟ้ฎ
โ
1. ็ซๅณ่ทๅ๏ผIPๅฐ็ไฟกๆฏ
โโ ๆฅๆบ๏ผip-api.com
โโ ๅปถ่ฟ๏ผ<100ms
2. ๅณๆถๆพ็คบ๏ผๅฝๅไฝ็ฝฎๆ ่ฎฐ
โโ ๅจๅฐๅพไธๆ ่ฎฐ็จๆท
โโ ๆ ้็ญๅพ
ๅ็ซฏ
3. ๅ ่ฝฝๅๅฒๆฐๆฎ๏ผGistๅ
ๅฎน
โโ ๆฅๆบ๏ผGitHub Gist๏ผๅ
ฌๅผ๏ผ
โโ ็ผๅญ๏ผ1ๅฐๆถ
4. ๅผๆญฅไฟๅญ๏ผๆฐ่ฎฟ้ฎ่ฎฐๅฝ
โโ ็ฎๆ ๏ผGitHub Gist
โโ ๅปถ่ฟ๏ผๅฏๆฅๅ๏ผๅๅฐ๏ผ
5. ็จๆทไฝ้ช๏ผๅฎๅ
จไธๅๅฝฑๅ
โโ ้กต้ข็ซๅณๅๅบ
โโ ๆฐๆฎๆ็ปไธ่ดๆง
GET https://ip-api.com/json/?fields=status,country,countryCode,city,lat,lon,query
่ฏทๆฑๅคด๏ผ
ๆ ้่ฎค่ฏ
ๅๅบๆ ผๅผ๏ผ
{
"status": "success",
"country": "China",
"countryCode": "CN",
"city": "Hangzhou",
"lat": 30.2741,
"lon": 120.1551,
"query": "1.2.3.4"
}
้ๅถ๏ผ45่ฏทๆฑ/ๅ้
GET https://api.github.com/gists/{GIST_ID}
PATCH https://api.github.com/gists/{GIST_ID}
่ฎค่ฏ๏ผBearer {GITHUB_TOKEN}
ๅๅบ๏ผGistๅ
ๅฎน+ๅ
ๆฐๆฎ
POST /api/track-visitor
่ฏทๆฑไฝ๏ผ
{
"country": "China",
"city": "Hangzhou",
"latitude": 30.2741,
"longitude": 120.1551,
"ip": "1.2.3.4"
}
ๅๅบ๏ผ
{
"success": true,
"message": "Visitor tracked successfully",
"visitorCount": 123
}