爬文怪事多

  • 2322
  • 0
  • 2012-04-18

摘要:爬文怪事多

我想要將我工作經驗寫在部落格上,

這真是難得的經驗,原因,人生要遇到這麼多怪事,其實也是很難的。

 

公司有兩個Getway的IP,是供內部設定Getway,

內部設定第一條的話,他的對外IP是固定的。

內部設定為第二條的話,他的對外IP是浮動的,每隔多久,他會算重換一次IP,而這種浮動的IP,我們是拿來爬文用的,好讓對方一直都不知道我們的IP是多少,很難擋的到我們。

 

而這浮動IP所造成的影響,可真不是普通的大。

因為這浮動IP每隔多久,好像是使用量超過某個線數時,他就會重換一次,而重換一次需要時間,

就在這幾分鐘(或幾秒鐘)的重換時間內,剛好我要將資料大量匯出到遠端資料庫。

其中一條失敗,我整個大量匯檔就要重來,就這樣剛好的,中標。

這就變成我解釋不出的原因之一,為何遠端匯出會在某個時間點或亂數的發生錯誤呢?

 

第二個遠端就是爬文的速度變慢了,而且還連不出去為什麼呢?

這又跟網路設置架構有關。

每一條線,都會透過我們的網路孔,往我們的Hub移動,

而Hub又連上了Switch,結果好死不死,這Switch不只連我們的Hub,還連其他三個USB不斷電系統,

而這三個USB不斷電系統,為了能夠遠端偵測系統是否運作正常,有連上了網路,

但偏偏就是有一個USB系統出問題,問題一直產生錯誤封包,塞滿了Switch,

而Switch掛了,反而導致了我們的Hub受阻,導致我們的爬文連線一直timeout。

真又是一個orz的問題。

 

第三,當我們使用了proxy做爬文,也使用了浮動IP做爬文,但偏偏被擋了,

也不知道為什麼,我們的上司的電腦,就很正常的運作,我們就連網頁都開不起來,為什麼呢?

好死不死的,我們的不是固定IP,而這個固定IP與其他浮動IP,

他的B Class網路IP不一樣,我們的浮動IP,對方將整個B Class以下的IP全部擋住。

導致,宣告爬文不致,無法爬文,與對方妥協,不在爬了,方能提供我們連上他網站。

 

第四,上班後每幾個禮拜,竟然就遇到要換proxy的事情,還特別使用了找proxy工具,與測proxy工具,然後換proxy,因為某個網站,會擋某個proxy,只好就給他換proxy,不然沒得爬。

 

第五,曾經爬回一個,使用ascii傳回的網頁,他使用的是encase封裝後回傳的資料,要用js的unencase才能解封裝,害得我去網路找unencase的Java Code來解,Java的預設好像沒這個解encase所造成的字串的解析類別。

 

第六,某一天,看到某個網站,竟然使用的是json後的值,傳在網頁參數後面,還真是一個讓人瞎眼的做法。

 

第七,因為會使用FTP傳輸,沒想到,還第一次遇到要設定防火牆的例外特例的port,開放20,21,1024為例外,並且允許一些特殊程式,可以例外不要擋,像MySql Workbench,還有設定檔案分享。

第八,使用了Web debugger後,才知道,可以用這個當作測試工具,測網站該用什麼封包傳過去,還有送假封包,post過去,就像對方不開放get,也使用viewstate,竟然也能送封包過去偵測呢?(最後一招當然使用imacros)

第九,是沒想過,會有人偵測得到封包,然後偵測封包為某個瀏覽器,某些資訊,曾經遇到問題,改用另種偽裝成chrome就沒事了。真神奇。

第十,有一次爬對方給的網頁,會轉頁為xml路徑,沒想到使用proxy 會出事,不使用proxy結果就沒事。

第十一,有一次,幫同事設定,要他開放他的mysql給我連,卻連不過去,原來是要設定防火牆,還有要設定可連過來的人要使用的ip是什麼pattern

第十二,如何設定固定IP、如何設定geyway,如何設定瀏覽器使用什麼proxy,如何設定防火牆。

第十三,因為一臺機器,只有8GB的RAM,但Java程式跑,在32位元下,最多只能到1500MB,但一臺機器要跑很多程式,就要看需要量,而購製機器,來跑不同的程式,64位元是無上限。

第十四,懂得設定tomcat,JAVA_HOME,bat

第十五,Mysql有預設的最大SQL長度,如果有特殊原因製造了超過那SQL長度的大小,則需要設定一下。

第十六,當Mysql被很多小程式Call的,而造成很多的Connection,未釋放,則會造成Mysql掛掉,以及mysql內部的sql語法如果下的不好,會造成memory out,做法,需要設定connection連線的時間存在長度,太久沒用,則關掉,以及,小程式使用connection pool,及,多個小程式,組成一個小程式,共用同一個connection pool,簡少資源損耗。

第十七,會經常凌晨時,發生Error,不明原因 。疑似凌晨發生記憶體爆量事件,或other事件,俗稱當機。