http協議-防盜鏈

我們熟知的response對象:

response.setContentType("application/octet-stream;charset=utf-8");//服務器返回類型
response.setHeader("User-Agent", "Mozilla/5.0");//瀏覽器類型及版本、操作系統及版本、瀏覽器內核、等信息的標識

常見header:

headers = { 
    'Host':'www.super-ping.com', 
    'Connection':'keep-alive', 
    'Cache-Control':'max-age=0', 
    'Accept': 'text/html, */*; q=0.01', 
    'X-Requested-With': 'XMLHttpRequest', //XMLHttpRequest是ajax請求
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36', 
    'DNT':'1', 
    'Referer': 'http://www.super-ping.com/?ping=www.google.com&locale=sc', 
    'Accept-Encoding': 'gzip, deflate, sdch', 
    'Accept-Language': 'zh-CN,zh;q=0.8,ja;q=0.6' 
}

某些網站反感爬蟲的到訪,於是對爬蟲一律拒絕請求。
這時候我們需要僞裝成瀏覽器,這可以通過修改http包中的header來實現。
上面的例子裏面user-agent就是僞裝過的。

'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36'

還可以通過header判斷是不是ajax請求

public boolean isAjaxRequest(HttpServletRequest request){  
    String header = request.getHeader("X-Requested-With");  
    boolean isAjax = "XMLHttpRequest".equals(header) ? true:false;  
    return isAjax;  
}  

對付”防盜鏈”:

某些站點有所謂的反盜鏈設置,其實說穿了很簡單,
就是檢查你發送請求的header裏面,referer站點是不是他自己,
所以我們只需要像把headers的referer改成該網站即可。

header = { 'Referer':'http://www.cnbeta.com/articles' }

總之 header 你可以放入任何想要的header,來做一些僞裝。
例如,有些網站喜歡讀取header中的X-Forwarded-For來看看人家的真實IP,可以直接把X-Forwarde-For改了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章