Php 我能';我似乎不知道如何登录网站并获取HTML
这是按钮的HTMLPhp 我能';我似乎不知道如何登录网站并获取HTML,php,html,curl,Php,Html,Curl,这是按钮的HTML <form id="loginbox_form" class="okform initialized" method="post" action="https://www.okcupid.com/login"> <div id="login_usernameContainer" class="inputcontainer input empty"> <input id="login_username" name="user
<form id="loginbox_form" class="okform initialized" method="post" action="https://www.okcupid.com/login">
<div id="login_usernameContainer" class="inputcontainer input empty">
<input id="login_username" name="username" placeholder="Your email or username"><span class="okform-feedback message empty" style="height: 0"></span>
<div class="icon okicon"></div>
</div>
<div id="login_passwordContainer" class="inputcontainer input empty">
<input id="login_password" type="password" name="password" placeholder="Password"><span class="okform-feedback message empty" style="height: 0"></span>
<div class="icon okicon"></div>
</div>
<button type="submit" id="sign_in_button" class="flatbutton">Let’s go</button>
</form>
我们走吧
我试图制作一个简单的脚本,尝试登录,然后在登录后获取HTML
如果帐户信息无效,则HTML中现在有此字符串
你的信息不正确。再试一次
这是我到目前为止的代码
<?php
$username = 'FAKEUSERNAME';
$password = 'FAKEPASSWORD';
$loginUrl = 'http://www.okcupid.com/login';
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_username='.$username.'&login_password='.$password);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec($ch);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
但不管出于什么原因,当我打开我的.php页面时,我只得到了okcupid.com的登录页面。我只是想看看帐户登录是否失败
另一个想法是尝试登录到一个页面,然后转到另一个页面,看看该页面是否加载。您只有在登录时才能访问的页面是
登录数据应设置为cookie,并在下一个请求中读取
curl -c cookies.txt -d "username=uname&password=yourpassword" http://site/login
要设置cookie并在后续请求中使用,您可以使用以下代码
curl -b cookies.txt http://site/newpage
在PHP中,这是如何使用curl设置cookie的
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
你已经做过了
对于阅读cookie,您可以使用
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
这是您更新后的登录代码
<?php
$username = 'FAKEUSERNAME';
$password = 'FAKEPASSWORD';
$loginUrl = 'http://www.okcupid.com/login';
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_username='.$username.'&login_password='.$password);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec($ch);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
对于登录后的后续请求,代码如下所示:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL,"http://www.okcupid.com/afterlogin.php");
$content = curl_exec ($ch);
curl_close ($ch);
echo $content;
?>
确保为cookie文件指定了正确的路径。Uhh。超级愚蠢的问题,我不太擅长cUrl,我如何将您提供的代码更改为PHP?好的,非常抱歉。我运行了这段代码,然后当我用FTP传输到我的服务器时,我在任何地方都看不到包含cookie.txt的文件。另外,如果我想在同一个文件中立即检查,我会把这两个东西放在同一个PHP文件中吗?有什么想法吗?我不知道怎么解决这个问题