2013-05-22 55 views
1

我用JSoup製作了Java Scholar中的Google Scholar的網絡刮板。刮板搜索學術搜索DOI,並找到本文的引用。這些數據是研究所需要的。Java web-scraper captcha

但是,刮刀只適用於第一次請求。 .. 之後,刮板在學者網站上遇到驗證碼。

但是,當我在瀏覽器(Chrome)中打開網站時Google Google Scholar正常打開。

這怎麼可能?所有請求來自同一個IP地址! 到目前爲止,我曾嘗試以下選項:

  • 選擇一個隨機用戶代理的請求(從5用戶代理的列表)5-50秒之間請求之間
  • 隨機
  • 延遲
  • 使用TOR代理。然而,幾乎所有的終端節點都被谷歌屏蔽了

當我分析Chrome向Scholar發出的請求時,我發現cookie與某些會話ID一起使用。可能這就是Chrome請求未被阻止的原因。有沒有可能使用此cookie用JSoup進行請求?

謝謝!

回答

2

有這麼映入腦海三件事情:

  1. 你是不是保存請求之間的cookie。您的第一個請求應該保存cookie並將其傳遞到服務器以便進行下一個請求(設置Referer頭部也不會受到影響)。有一個例子here
  2. 如果谷歌很棘手,他們可以看到你的第一個請求沒有加載頁面上的任何css/js /圖像。這是一個肯定的跡象,你是一個機器人。
  3. Javascript正在做一些東西在頁面中,一旦你有它加載。

我認爲第一個是最可能的選擇。您應該嘗試將Chrome中的請求中看到的許多頭文件複製到您的Java代碼中。

+1

你的第一點修好了!我查看了Chrome提出的請求,並將JSoup scraper中的所有標題和cookie值複製了出來。謝謝! – user1255553