我正在使用cURL登录Facebook,而我正在使用TOR代理进行此登录。这是我的代码:
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
以通过端口9050使用TOR代理。
它有效,我正在检查这个方式:
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);
}
此代码将在http://icanhazip.com/
上检查我的公共IP并将其打印给我,并且它正在运行,我正在获取TOR IP。
但是,当我尝试使用此系统登录Facebook时,我仍然可以获得真实的IP地址。
有人可以帮我确定发生了什么吗?
答案 0 :(得分:0)
历史上,每一点信息都被用于重新识别用户。我的心脏谷歌甚至没有密码登录:根据用户的行为。简而言之:我们不像我们所认为的那样自主,但可以预测到一定程度。无论你想做什么进一步:记住,不仅查询字符串,IP地址和浏览器名称被用来识别用户,还有习惯,打字速度,ping时间等。事实上,有很多方法,即使你的脚本工作,它也需要定期进行安全检查,以使其与这些方法的开发保持同步。我没有看到你的代码有任何问题,所以我认为这与非传统技术有关。
从历史到未来:我们在SSL协议中有一些新的位,它们没有专门用于进行会话管理,但可能会提供这种可能性作为副作用。我见过的那些都没有实现,但我认为OCSP装订和ALPN是很好的候选者。
对我来说,第一个也不太可能是OCSP,而且#cache&#39; ssl证书,以便服务器知道您的客户端在那里。如果facebook拥有其控制下的证书颁发机构,只要您使用缓存的证书nsa,就可以在那里保存您的地址并重复使用;)
第二个是ALPN,它允许使用http2并切换到另一个协议,如UDP,这不能与您的本地TOR(https://www.whonix.org/wiki/Tunnel_UDP_over_Tor)一起使用。可以通过UDP建立第二个连接以完全绕过您的代理。因此,我会尝试使用curl_setopt($ch, CURLOPT_SSL_ENABLE_ALPN, 1);
- sry google禁用ALPN;)
我只能希望这会对你有所帮助,因为我还没有尝试过。在任何情况下,您应该阅读,理解并手动设置每个setopt选项,并且永远不要相信默认值,以便尽可能地处于最佳状态。这是因为curls依赖项(如libssl)总是可以自己使用配置文件和缓存。因此,它甚至不足以检查所有卷曲选项,以及它们使用的卷曲选项。另一方面,curl的选项是最好的开始,因为它们允许禁用curl的不必要的功能,因此我会尽可能地做。