我正在使用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地址。
有人可以帮我鉴定一下是怎么回事?
您正在调用'curl_exec()'两次,但是您只设置一次代理配置。确保curl不会丢弃这两个请求之间的连接,并绕过第二个请求上的代理。 –
感谢您的支持,但它仍然无效,即使是在loginOnFacebook()上删除第二个电话:( )请记住,这两个片段不会一起执行,第二个片断仅用于测试代理工作! 感谢雷米! – user3159043
对于Facebook你应该他们的onion服务在https://www.facebookcorewwwi.onion这确保了整个连接永远不会离开Tor网络 – qbi