iT邦幫忙

0

PHP中的 find_get_content 以及想釐清一些網路觀念的問題。

去年曾經處理過一個問題,需要在這個叫號機頁面
http://landno.hccg.gov.tw/
去擷取10秒更新一次的值,打印在另外處理的頁面上。

當時使用find_get_content並將取得的內容用正則法篩選後取出我需要的值打印出來。

現在臨時有些問題發生需要回去追查這個網站,
但這個網站現在80 port是關閉的,所以看不到任何內容。

納悶的是叫號機現在還在正常運作中。

另外再去查 find_get_content,說明是指這個函數的運作是取得網站的原始文件。
<----------------------------------------------------------------------------------------------------------->
這裡有不少疑問:

80 port沒開,外部網路想要讀到網站內容是看不到的。
但是用ping去試該網址時可以正確解析DNS。
而這個網址的功能僅只有傳遞叫號機現場的數字跟狀況做成的表格。
假使我用find_get_content是取得這個文件的原碼,會經由apache的設定
讀取landno.hccg.gov.tw 這個網域的內容。
apache的設定中有一個documentroot指定讀取網站的路徑,又網站在讀取時會找index。
就會找到顯示叫號機的網頁文件。
只要主機沒有離線,位置沒有更換,find_get_content一樣可以擷取到東西

是這樣子的嗎?可是感覺又很不太對。還請指正錯誤的觀念。

1 個回答

0
rewrite
iT邦新手 5 級 ‧ 2018-07-10 09:16:18
最佳解答

find_get_content?
應該是你手誤打錯字,PHP內建的function應該沒有find_get_content,我想你說的是 file_get_contents()
才對...吧?,

接下來要釐清的部分有,
80 port 沒有對外服務以及使用ping去試該網址時可以正確解析DNS

首先要先確認 內外網問題,叫號機跟資料存取端的 http://landno.hccg.gov.tw/
是不是在同一內網,有可能管理者不要讓這個服務對外公開,所以才會限制「對外」80 port的存取
而ping 該網址可以正常解析是因為,ping 是走ICMP協定,來確認主機是否有回應,跟apache service可否存取沒有直接關係,只能說ping 的到主機但不一定服務有啟動或是可被存取。
(在打這篇文章的時候已經ping不到,依照你的描述做推論有可能是在內網的dns才有存取權)

回到問題點

你要用web server當你的資料提供端那就要先確認[ http://網址[:port] ] or[ http://IP[:port] ] 是可以被存取的,才有可能被file_get_contents()使用,所以先確認你要給叫號機的資料源是不是正常的,在著手使用function,這樣問題比較清楚

看更多先前的回應...收起先前的回應...
snameless iT邦新手 5 級 ‧ 2018-07-10 10:15:40 檢舉

感謝,真的手誤了。
當時腦袋已經打結了。
原本對網站主機還有SSH存取權時,功能做好的時候沒有另外調整設定,昨天突然需要追查這個,主機存取權又被回收,能夠嘗試釐清而做的測試也是能想到甚麼就做甚麼了。

另外,當時還需要使用他們的VPN進入他們的網段,進入後使用telnet 80也沒進去的當下開始產生疑問了。
或許在內部原先要走的80 port調整到使用自定的port走http協定,如果主機還能夠存取,看到iptables應該能知道一點甚麼。

rewrite iT邦新手 5 級 ‧ 2018-07-10 13:40:23 檢舉

有可能如你所述的,網管修改了叫號機的連線位置

希望有幫你解惑到
/images/emoticon/emoticon12.gif

snameless iT邦新手 5 級 ‧ 2018-07-10 14:26:39 檢舉

另外有問題想請教:
windows的cmd內建的一些網路測試用指令,會因為主機本身網路環境不同而改變發送請求的來源IP嗎?

比如原本的ip是118.163.207.235,telnet時來源IP是118這組
接了vpn後變133.242.187.207,telnet時來源變成133這組

還是基本上來源IP都不會變?/images/emoticon/emoticon06.gif

rewrite iT邦新手 5 級 ‧ 2018-07-11 12:00:33 檢舉

snameless

請求的來源是不變的,就算是使用VPN也是一樣
差別在於你看到的是內網還是外網

假設
domain name: landno.hccg.gov.tw
public IP: 118.163.207.235
private IP: 133.242.187.207

你在還沒用vpn前只能對public IP進行連線,而使用vpn後可以對private IP進行連線,兩個還是一樣的主機位置

but
你下的指令是 telent landno.hccg.gov.tw 80
上面這個指令會因為你的位置而show出不一樣的ip「show出不一樣的ip前提是網管有特別設定DNS」

如果你是這樣下 telent 118.163.207.235 80,還是一樣連到同一個位置

snameless iT邦新手 5 級 ‧ 2018-07-17 14:16:44 檢舉

了解,感謝!

我要發表回答

立即登入回答