我有一个问题,我需要学习如何访问安全的登录表单,这样我才能获取其中的数据。我对此很陌生,我想用Curl
进行处理,然后用simple_html_dom
或regex
抓取数据。如下面的代码所示,它是username
和password
的简单形式。我的问题是,如何在不编写Curl
admin和username
123页的情况下使用password
和任何其他表单访问该表单?我知道我必须使用CURLOPT_RETURNTRANSFER
,CURLOPT_SSL..etc
,而且我也知道刮取网站永远不会使用相同的代码,每个网站都有不同的选项,您需要使用CURLOPT_...
进行管理,但我不知道其结构。我需要什么,从哪里开始。
代码
<body>
<center>
<form method="post">
<label>Username</label>
<input name="user" type="text">
<label>Password</label>
<input name="pass" type="password">
<button type="submit">Submit</button>
</form>
</center>
</body>
<html>
<?php
$name="";
$password = "";
if(!empty($_POST['user']) && !empty($_POST['pass'])){
$name = $_POST['user'];
$password = $_POST['pass'];
}
if($name == "admin" && $password == "123"){
$url = "https://stackoverflow.com/";
$html = file_get_html($url);
foreach ($html->find('a') as $values){
echo $values->href."<br>";
}
} else{
echo "Error";
}
[您在上面看到了这段代码:首先,它不能在if statement
内部进行解析,但是可以,但是我的问题是我该如何使用curl访问安全表单,然后发布抓取的数据?这样的形式无处不在。如果有人知道如何引导我或告诉我会很好。谢谢您的时间
当然,您不必访问表单,如果您想对多个随机网站进行自动操作,则必须使用正则表达式来查找登录表单。
[如果您已经确定要登录一个网站,则可以使用CURL并发送POST请求,(请查看stackoverflow PHP + curl, HTTP POST sample code中已打开的问题)。如果网站表单在表单中使用“令牌”来保护“ csrf”,则您的代码必须找到该令牌,然后将其添加到POST请求字段中并发出请求。
[我推荐您guzzlehttp/guzzle,如果您不使用作曲器,只需从github和require
/include
src/Client.php
下载它并编写代码。请在这里查看POST/Form request documentation和form_params。花时间阅读文档并编写好的代码。祝你好运