用 Node.js 的 http
来抓取某页面:
var http = require('http');
http.get('http://example.com', function (res) {
console.log(res.statusCode);
});
返回的状态码是 404,但是网页能够正常访问,我用自己服务器测试也是一样,所以应该没有 ban 掉我的 ip。这是否代表着对方已经通过服务器端禁掉了他人的抓取?
还有就顺带求教,这是如何做到的?
胡乱猜测,求各位大大指点一下,以上。
檢查一下
User-Agent
和Referer
,另外再看看Cookie
,還有那個網頁是不是用Ajax動態產生的。你可以用Chrome的「開發者工具」或Firebug看看瀏覽器再開啟這個網頁時都發了哪些東西,然後把這些東西都加到你的請求裡去。
你可以看看 pyspider 爬蟲教學(二):AJAX 和 HTTP
雖然是基於 pyspider 寫得,但原理講的比較多
你說的網站,我正常抓取。
不知是你程式有何錯誤,抓取其它網站如何?
你用我寫的這個試試?反正我這裡成功。
我猜可能是設定了 Content-Security-Policy
把瀏覽器發送請求時的所有header都加上,應該可以的。
很簡單,你的header沒有UA,直接被伺服器攔截成攻擊,加上UA,Referer等就可以抓到了