2016-07-04 79 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

相关问题