2016-07-04 81 views
1

我正在使用cURL登錄Facebook,並且正在使用TOR代理進行此登錄。這裏是我的代碼:即使使用TOR + cURL + PHP,Facebook仍會獲得我真實的IP

function loginOnFacebook($login_email, $login_pass) 
    { 
     $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_URL, 'https://m.facebook.com/login.php'); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

     // Proxy configuration, very important! 
     if(isset($params['t'])) 
     { 
      curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
      curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:9050"); 
      curl_setopt($ch, CURLOPT_PROXYTYPE, 7);  
     } 

     curl_setopt($ch, CURLOPT_POSTFIELDS,'charset_test=€,´,€,´,水,Д,Є&email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login'); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Charset: utf-8','Accept-Language: en-us,en;q=0.7,bn-bd;q=0.3','Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5')); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd()); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd()); 
     curl_setopt($ch, CURLOPT_USERAGENT, "user_agent"); 
     curl_setopt($ch, CURLOPT_REFERER, "http://m.facebook.com"); 

     $fbMain = curl_exec($ch) or die(curl_error($ch)); 

     $url = 'https://m.facebook.com/home.php?refid=18'; 

     curl_setopt($ch, CURLOPT_URL, $url); 

     $demo_mac=curl_exec($ch); 
     $effectiveUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

     if($effectiveUrl == $url) 
      return true; 
     else 
      return false; 
    } 

你可以看到,我檢查$param -t使用TOR代理通過端口9050

它的工作原理,我檢查是這樣的:

for($i = 0; $i <= 50; $i++) 
{ 
    $ch = curl_init('http://icanhazip.com/'); 

    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); 

    if(isset($params['t'])) 
    { 
     curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:9050"); 
     curl_setopt($ch, CURLOPT_PROXYTYPE, 7);  
    } 

    $myIp = curl_exec($ch) or die(curl_error($ch)); 
    print($myIp); 
} 

此代碼將檢查我的公共IP在http://icanhazip.com/並打印給我,它的工作,我得到一個TOR IP。

但是,當我嘗試使用這個系統在Facebook上登錄時,我仍然得到我的真實IP地址。

image

有人可以幫我鑑定一下是怎麼回事?

+0

您正在調用'curl_exec()'兩次,但是您只設置一次代理配置。確保curl不會丟棄這兩個請求之間的連接,並繞過第二個請求上的代理。 –

+0

感謝您的支持,但它仍然無效,即使是在loginOnFacebook()上刪除第二個電話:( )請記住,這兩個片段不會一起執行,第二個片斷僅用於測試代理工作! 感謝雷米! – user3159043

+0

對於Facebook你應該他們的onion服務在https://www.facebookcorewwwi.onion這確保了整個連接永遠不會離開Tor網絡 – qbi

回答

0

從歷史上看,每一點信息都被用來重新識別用戶。我心裏谷歌甚至曾經在沒有密碼的登錄:基於用戶的行爲。簡而言之:我們不像我們認爲的那樣具有自主性,但可以預測到某一點。無論您想進一步做什麼:請記住,不僅查詢字符串,IP地址和瀏覽器名稱正在用於識別用戶,還包括習慣,打字速度,ping時間等。實際上,有很多方法,即使一旦你的腳本工作,它也需要定期的安全檢查,以保持它與這種方法的發展同步。我沒有看到您的代碼有任何問題,所以我會認爲這與非傳統技術有關。

從歷史到未來:我們在SSL協議中有一些新的特性,它們並沒有專門用於會話管理,但可能會提供這種可能性作爲副作用。我沒有見過這些,但我認爲OCSP裝訂和ALPN是很好的候選人。

  • 首先和較不可能的似乎OCSP對我來說,'緩存'SSL證書,以便服務器知道,你的客戶端在那裏。如果facebook有一個在其控制下的證書頒發機構,它可以簡單地保存你的地址並重復使用它,只要你使用你的緩存證書nsa;)

  • 其次是ALPN,它允許使用http2並切換到另一個協議,如UDP,這不適用於您的本地TOR(https://www.whonix.org/wiki/Tunnel_UDP_over_Tor)。有可能通過UDP建立第二個連接來完全繞過你的代理。因此,我會嘗試禁用ALPN現在與curl_setopt($ch, CURLOPT_SSL_ENABLE_ALPN, 1); - SRY谷歌;)

我只能希望這會幫助你,因爲我還沒有嘗試過。在任何情況下,你都應該閱讀,理解和手動設置每一個setopt選項,並且永遠不要相信默認值,以便儘可能保存最有價值的一面。這是因爲curls依賴關係,比如libssl總是可以自由使用配置文件和緩存。因此,它甚至不足以檢查所有捲曲選項,但也包括他們使用的捲曲選項。另一方面,捲曲的選擇是最好的開始,因爲它允許禁用不必要的捲曲特徵,因此我會盡可能地做到這一點。

+0

而且一旦你嘗試了:還要確保你的當前會話緩存得到了清除,最好將'CURLOPT_COOKIESESSION'設置爲TRUE – entwicklerseite

+0

仍然沒有結果:/ .. 。我嘗試了CURLOPT_SSL_ENABLE_ALPN,但它不能識別這個常量:X – user3159043

+0

哦!我從C文檔中取出了它。該變量可能在PHP – entwicklerseite

相關問題