台灣最大程式設計社群網站
線上人數
565
 
會員總數:245800
討論主題:189429
歡迎您免費加入會員
討論區列表 >> C# >> ip api如何從後端直接抓取
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ip api如何從後端直接抓取
價值 : 50 QP  點閱數:1445 回應數:16
樓主

Jay Best
門外漢
0 6
190 36
發送站內信

請問要如何從c#<後端> 抓取客戶端的 地區/時區/國家 (已取到ip用的code https://imageshack.com/a/img921/9894/8iQiBd.png)
因為之前是用前端去抓,發現很麻煩傳到後端(https://imageshack.us/i/ponHVb8gp)
所以想請問如何直接在<後端>抓取 地區/時區/國家!
請各問高手指點




搜尋相關Tags的文章: [ c# ] , [ 後端 ] , [ ip ] , [ api ] , [ ] ,
本篇文章發表於2018-09-03 16:08
1樓
作者回應

Jay Best
檢舉此回應
有高手能解答嗎
本篇文章回覆於2018-09-05 00:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

彩虹
檢舉此回應
何不試試用後端 C# HttpClient 直接去抓 API https://api.ip.sb/geoip 的資料呢~
之後你就可以直接在後端處理資料

例如
curl Request with ASP.NET
https://stackoverflow.com/questions/16619065/curl-request-with-asp-net
本篇文章回覆於2018-09-05 07:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
網路上有一些API有提供這樣的服務
請搜尋關鍵字『IP API Country JSON』

^_^
本篇文章回覆於2018-09-05 09:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

彩虹
檢舉此回應
提醒一下
如果直接用後端去爬 https://api.ip.sb/geoip 這個網址的話
後面要記得帶入取得到的 IP 變數 (你已經寫好的 IPaddr ) ,例如 https://api.ip.sb/geoip/帶上客戶端IPaddr
不然會變成 server IP

這邊也有一些範例,用後端去 call API 的範例如下
使用 HttpClient 來存取 GET,POST,PUT,DELETE,PATCH 網路資源
https://blog.yowko.com/2017/06/httpclient.html
本篇文章回覆於2018-09-05 12:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Jay Best
檢舉此回應
好非常感謝∼想詢問我用vs asp.net空網站 但呼叫不出來 using system.net.HTTP; 是遺漏什麼嗎

本篇文章回覆於2018-09-05 17:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Jay Best
檢舉此回應
.
本篇文章回覆於2018-09-10 14:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

彩虹
檢舉此回應
嗨你好,我有看到你私訊給我,我順便在這邊回覆

我這邊提到「https://api.ip.sb/geoip/帶上客戶端IPaddr」的意思是
這張圖不是已經寫好抓取 client IP (客戶端IP了嗎)
http://imagizer.imageshack.us/a/img921/9894/8iQiBd.png


Label1.Text = "用戶IP:" + IPaddr;
IPaddr 就是你寫出來抓到客戶端 IP,假設是:112.227.48.60

你把那段程式碼抓到的IP,透過組合
"https://api.ip.sb/geoip/" + IPaddr
會變成如下
https://api.ip.sb/geoip/112.227.48.60
就可以正確取得到 client IP 資訊

如果直接送出這樣的網址 「https://api.ip.sb/geoip/」
這時候是會以 server IP 為主
本篇文章回覆於2018-09-13 15:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Jay Best
檢舉此回應
彩虹大師:
code: https://imageshack.com/a/img922/3231/UFb4e0.png
是這樣嗎?但是我有架設在iis 但抓的City好像都不太對

結果:http://imagizer.imageshack.us/a/img922/8748/msa1ty.png

再麻煩了
本篇文章回覆於2018-09-13 17:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

彩虹
檢舉此回應
你不覺得這邊很奇怪嗎,你的 IPaddr 是空值呀,根本沒有帶到 IP


你可以測試改這樣,答案應該不一樣


提供你比較好懂的方式
1.你要不要乾脆把取 client IP 的程式碼,改放到 Page_Load() 裡面
2.不然就是先呼叫 get_ip(); 然後再把 Label1.Text 指定到 IPaddr


另外下次可以請你把程式碼直接貼在這邊嗎,不一定要一直用圖片
並請善用程式碼標籤

本篇文章回覆於2018-09-13 18:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

彩虹
檢舉此回應
不然就把 Page_Load() 的程式碼放到 getIP() 裡面
你自己抉擇一下


題外話:我剛剛9樓那邊打錯, get_ip() 應該改成 getIP()
本篇文章回覆於2018-09-13 18:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

Jay Best
檢舉此回應
感謝彩虹大指點!

我有照您說的改了!
然後在c# 執行 顯示這樣應該沒錯了

{"ip":"::1"}
用戶IP: ::1
瀏覽器 :Chrome68



後來有架IIs測試 其他都沒問題就city位置不正確,都顯示台北,還是因為我在學校IP的緣故?

{"offset":"8","longitude":121.5318,"city":"Taipei","timezone":"Asia\/Taipei","latitude":25.0478,"area_code":"0","region":"T'ai-pei","dma_code":"0","organization":"AS1659 Taiwan Academic Network (TANet) Information Center","country":"Taiwan","ip":"120.106.197.61","country_code3":"TWN","continent_code":"AS","country_code":"TW","region_code":"03"}
用戶IP: 120.106.197.61
瀏覽器 :Chrome68






本篇文章回覆於2018-09-14 12:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
不錯的參考

彩虹
檢舉此回應
恩,恭喜你,目前基本上是完成沒問題了!
可以結束此案~

順便說明一下
你只是丟IP address 去做呼叫 API 做查詢,然後對方也只是回傳資料給你
所以就剩下 API 那邊做判斷的,跟你沒有關係,你也沒有辦法去調整

你可以直接連結網址去看,並在網址上自行修改 IP 玩玩看,只要IP正確,就可以查詢
https://api.ip.sb/geoip/120.106.197.61

然後再跟其他網站做比對
IP查詢工具 - 查IP位置,IP查國家,ISP來源,查網址IP,查詢自己IP位址
http://dir.twseo.org/ip-check.php
下方有個 「輸入IP或網址:」,然後你把「120.106.197.61」輸入查詢,也是回傳「台北」(ISP來源)
本篇文章回覆於2018-09-14 13:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
最有價值解答

彩虹
檢舉此回應
另外順便補充一下
查詢IP的地點,一般你只能查詢到 ISP 服務提供者,並不會是真正的位址
除非你有辦法進入到 ISP 裡面去查∼

因此 IP 為何顯示 city 台北,是因為你們學校的網路,ISP服務是由 教育部 - (TANET-NET) 提供的

本篇文章回覆於2018-09-14 13:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

Jay Best
檢舉此回應
非常感謝! 彩虹大哥對我這剛接觸c#的新手細心解說!!
感恩感恩
本篇文章回覆於2018-09-14 20:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

Jay Best
檢舉此回應
彩虹大! 有看到我給你訊息嗎
本篇文章回覆於2018-09-18 15:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.