HTTP PHP學習

1、DNS負載均衡下訪問定點IP資源:
          在訪問服務器的時候我們可能會遇到這樣的情況,我們輸入一個域名,DNS服務器可能會做負載均衡,映射到具有不同IP地址的服務器上,這樣我們每次訪問相同域名的網站,可能會到具有不同IP地址的服務器上面去瀏覽資源,而我們卻毫不知情。現在我們要和該域名下某個固定IP地址的服務器進行交互,該怎麼做?
          在HTTP協議的中的header有一個字段Host是用來指定訪問的主機名以及端口。
          例:百度有倆個IP地址61.135.169.125和202.108.22.5,我們只想訪問第一個IP地址。
          命令如下:curl -H 'Host:www.baidu.com' http://61.135.169.125
          PHP:curl_setopt(&curl, CURLOPT_HTTPHEADER, 'www.baidu.com');
     
2、圖片防盜鏈:
     設置圖片防盜鏈:
          HTTP協議的header中有一個字段Referer可以用來告訴服務器是從哪個頁面鏈接到該網址的,因此常用來做流量統計。當一般的服務器也會用此做來圖片的防盜鏈判斷,即如果訪問該資源的網址和方式不是我們想要網址,那麼可以禁止其訪問。在nginx的配置文件nginx.conf中的location字段中可以設置訪問圖片資源的referer。一般字段如下:
      location ~ *\.(gif|jpg|jpeg|png|bmp|swf)$
      {
           valid_referers none blocked *.360.cn
           if ($invalid_referer)
           {
               return 403;
           }
      }
第一行:對以gif,jpg,jpeg,png,bmp,swf這些作爲後綴名的資源進行訪問設置
第二行:valid_referers表示有效的網址來源;
        none表示沒有referer字段(如直接輸入資源進行訪問);
        block表示根據防火牆僞裝過的referer字段,*.360.cn表示服務器列表;
第三行:if語句表示當訪問的referer字段不存在時做的操作,如果跳轉到該資源的連接在valid_referers中則invalid_referer的值爲0,否則爲1,然後返回403。
整個配置語句解釋:當對服務器上的目錄下的gif,jpg,png等圖片類型進行訪問時,如果是從none,block,*.360.cn這些地方跳轉過來的,則讓其進行訪問。否則返回403狀態。
如果要防止圖片盜鏈的直接訪問,把none去掉,並重啓服務器。
     繞過圖片防盜鏈:
          知道了圖片防盜鏈是怎麼設置的,我們就可以很輕鬆的繞過防盜鏈了。
          例:僞造從安全搜索跳轉到鳳凰網頁面。
          命令如下:curl -e www.so.com www.ifeng.com
          PHP:curl_setopt(&curl, CURLOPT_REFERER, 'www.so.com');
         

3、設置代理服務器:
正向代理:即在客戶端和服務器之間增加一個代理服務器,需要在客戶端設置代理服務器。從原始服務器取得內容,用戶通過向該代理服務器發送請求,由代理服務器轉交請求並將內容返還給客戶端。
反向代理:即在服務端做一個代理,客戶訪問服務端的時候並不知情,而且客戶並不需要做特別的設置,客戶端向反向代理髮送請求,接着反向代理判斷出向何處轉交請求,並將獲得的內容轉發給客戶端。
區別:簡單的說,正向代理就是通過代理由內網訪問外網,而反向代理是由外網訪問服務器內網。
原文鏈接

代理設置:
nginx中設置正向代理,最簡單的設置,沒有其它任何緩存大小,等待時間的處理:
nginx配置文件中增加字段
server
{
         resolver 8.8.8.8;
listen 1942;
location /
{
proxy_pass http://$http_host$request_uri;
}
}
resolver表示代理接受來自請求的時候需要向哪個DNS服務器做解析,這裏的8.8.8.8是google的DNS服務器。
listen 1942表示監聽的端口,$http_host即訪問主機的域名,$request_uri即訪問的資源。
使用代理:
curl中可以使用-x來指定HTTP代理,或者--socks5來指定socks5的代理。
例:使用我們上面的代理訪問鳳凰網頁。
命令如下:curl -x 127.0.0.1:1942 www.ifeng.com
PHP: curl_setopt(&curl, CURLOPT_PROXY, '127.0.0.1:1942');
         curl_setopt(&curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);//設置代理類型,默認HTTP
         curl_setopt(&curl, CURLOPT_PROXYUSERPW, 'admin:admin');//設置用戶名和密碼,默認都爲空
          

4、併發抓取:
          原文鏈接
          總的來說有倆個比較常用的模型:
         1、rolling-curl
          2、ParallelCurl
          裏面都有具體的文檔和例子。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章