您在這裡

屏蔽采集者專門進行站内搜索的爬蟲

James Qi 在 2015年11月4日 - 11:54 發表

  網站内容抓取采集真是中國互聯網的一大特色,我們做了這麼多年網站,一直都遇到各種各樣對我們内容進行采集、複制的家夥。前一陣子發現一個網站 www.postcodequery.com 具體和我們的 www.postcodebase.com 幾乎内容一樣,也真是煞費苦心。no

  另外近期在搬遷一些Wiki網站到雲服務器上的時候,發現RDS會急劇升高、卡死,從MySQL進程來看是一些内部搜索語句造成的,顯然正常的訪問者搜索不會這麼多、這麼快,隻能是機器人采集才會這樣,當時來不及查就臨時把内部搜索功能關閉了。

  但關閉功能畢竟不是長久之計,今天早上再次排查、處理,過程如下:

  1. 修改MediaWiki的LocalSettings.php,打開搜索功能;
  2. 觀察RDS進程情況,找到明顯增多、堆積的語句,例如:SELECT /* SearchMySQL::searchInternal 183.64.229.38 */  page_id,page_namespace,page_title  FROM `page`,`searchindex`   WHERE (page_id=si_page) AND ( MATCH(si_title) AGAINST('+\"u8xxxxxx u8xxxxxx\" ' IN BOOLEAN MODE) ) AND page_namespace = '0'  LIMIT 100 
  3. 在apache日志access.log中找到以上IP訪問的記錄,會發現很多都是搜索,例如:http://shandong.mingluji.com/index.php?limit=100&title=%E7%89%B9%E6%AE%8... ,這種站内搜索非常消耗資源,普通訪問者偶爾搜索不會對數據庫服務器造成負擔,但快速大量的機器搜索會讓數據庫服務器的内存、CPU耗盡從而變慢、連接數超過限制;
  4. 用apache rewrite的辦法修改.htaccess或者httpd.conf,對上述訪問特征進行屏蔽,具體寫法請自行根據情況決定并查資料參考apache rewrite用法;
  5. 屏蔽之前已經導緻RDS負載過高,一些進程殺死後成為killed但依然短期不消失,隻好重啟RDS恢複。

  另外,我們使用了幾年的反采集程序确實能起到一定作用,但有的情況下它本身也會造成數據庫負載過高,我還在考慮是否修改優化或者簡化功能甚至取消。

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。