2012-01-19 72 views
1

我想自动登录网站。如何使用PHP/CURL通过POST登录网站

想象一下,我有一个特定网站的用户名和密码。我想让他们轻松点击按钮,打开一个新窗口,然后通过CURL脚本将用户名/密码发布到页面中,然后允许重定向发生。

使用本教程中我觉得我有职务下来:http://www.html-form-guide.com/php-form/php-form-submit.html

,但我不自动跳转到用户通常会被定向到一个页面。我也相信,该网站希望cookie不知道它们是否是一种策略,以便以某种方式将cookie传递到客户端浏览器。

回答

0

http://www.php.net/manual/en/function.curl-setopt.php这里是所有可用的卷曲选项的列表

也许我错了,但卷曲接受,直到卷曲资源不被破坏持有饼干(或cookie的明确到期)

如果重定向不工作,这可能是因为您尝试登录到的页面,使用javascript重定向的页面或一些012>>> tag:curl仅接受http响应指令的重定向(如标题(“位置:....”)。 );在PHP)

所以你必须手动重定向调用yoursel f目标网址!

希望这有助于

0

发送POST请求,卷曲,打开(头和所有)的响应输出。这样,你可以窃取PHPSESSID(或任何会话ID)。然后将该cookie设置为用户计算机上的网站(如果可以的话,可能存在不确定的限制)。

public function login($email,$password){ 
$login=false; 
$post='member[email]='.urlencode($email).'&member[password]='.urlencode($password) 
. "&MAX_FILE_SIZE=50000000&dado_form_3=1"; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, 'http://your.login.info/here'); 
curl_setopt($ch,CURLOPT_USERAGENT,$this->useragent); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
//POST 
curl_setopt($ch,CURLOPT_POST,4); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$post); 

curl_setopt($ch, CURLOPT_HEADER, 1); 
$output=curl_exec($ch); 

//get cookies in map array 
$rows=explode("\n",$output); 
foreach($rows as $num=>$row){ 
$trim=substr($row,0,5); 
$trim2=substr($row,0,29); 
if ($trim2=="Location: /public/member/home")$login=true; 
if ($trim=="Set-C") {$rownum=$num;}} 
$cookies=$rows[$rownum]; 
$cookies=substr($cookies,12);/*RAW COOKIE*/ 
$cookies=explode("; ",$cookies); 
$arr=array(); 
foreach ($cookies as $n=>$v){ 
$s=explode("=",$v); 
$arr[$s[0]]=$s[1];} 
$cookies=$arr; 

$phpsessid=$cookies['PHPSESSID']; 
curl_close($ch); 
return $login;}//end isLoggedIn 
+0

亚当我很想看看一些代码片段。感谢您愿意分享。 –

+0

我添加了一个我的登录功能。它可以从cookie字符串中提取php会话ID。使用tamperdata或萤火虫找出您的网站是否使用phpsessid或其他会话追踪器。祝你好运 –

+0

希望你有XSS权限设置为其他网站的Cookie ..这将工作在同一个域名,但你需要做很多与Cors权限,以使其在现代浏览器跨域的工作权限 – hanshenrik