用nokogiri 爬google 搜尋資料


#1

之前練習用nokogiri 去爬google 搜尋後的資料都正常。
今天忽然跳出HTTP 503 。是我的IP被google擋了嗎…

錯誤代碼

OpenURI::HTTPError (503 service unavailable)


#2

我是Google一定擋你 X"DDDD … Google 有進行流量分析之類的,太頻繁一定檔,有時還會鎖 IP

再來…沒人用 open-uri 這種太基本的 http client 來去爬大站,因為那類型的網站通常有入侵偵測,類似用 http header 中的 user agent 來識別你的瀏覽器種類之類的

請在類似這種地方找一個你適合用的 http client

https://www.ruby-toolbox.com/categories/http_clients

我自己愛用 curb ( curl ) 就是,然後至少要偽裝你的 user agent,或是任何形式的加密模式,而 google 預設已經有開 ssl ,所以應該要連 https 的封裝都要考慮進去之類的

anyway 基本上把所有封包和加密模式全部打對了,應該就可以拉到資料有的沒的,這是第一關…

第二關是 thread and sleep…簡單的來說你應該要建立 thread 來一次發出多個請求,而還要再建立 sleep 機制,否則一秒噴 20 個我也一定擋你,因為一看就是來攻擊或是機器人

第三關,一般的機器人都不吃 cookie 或 etag,所以不會重送這些資訊回來,所以…其實也很容易抓到你之類的||,不過這邊就有點困難了(每次有set-cookie之後就要再把cookie送回去之類的)

so~ 以上,加油唄


#3

囧,感謝建議與關鍵字!!再來研究一下。