【发布时间】:2016-09-04 10:13:52
【问题描述】:
我在 Node.js 中有一个成功的脚本,它通过模仿登录过程设法从需要授权的页面获取内容。
我现在需要使用 PHP 从网页获取内容以用于稍微不同的目的,并尝试将脚本从 Javascript 转换为 PHP,但是它不起作用。
有人可以帮我将代码从 Javascript 切换到 PHP,或者让我知道我当前的代码有什么问题吗?
Javascript Node.js 授权
var request = require("request");
var j = request.jar();
var cookie = request.cookie('entercookie');
j.setCookie(cookie, 'http://www.example.com');
var request = request.defaults({jar: j});
request.post('https://www.example.com/login', {username: 'username', password: 'password'}, function(err, res, body) {
makeRequest(100);
});
PHP 授权
$homepage = 'http://example.com';
$postData = http_build_query(
array(
'username' => 'username',
'password' => 'password'
)
);
$cookie = 'cookie';
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded\r\n
Cookie: '.$cookie,
'content' => $postData
)
));
$data = file_get_contents($homepage, false, $context);
echo $data;
如您所见,我已经为页面设置了用户名、密码和 cookie(就像我在 Node.js 脚本中所做的那样),但是出现了指定的错误。
我想补充一点,如果cURL 是一个更好的解决方案,我愿意使用它。
【问题讨论】:
-
也许我记错了我的规范,但是在 HTTP 基本授权中,cookie 不会一起发送,因此
:$cookie的 base64 中不会有串联 -
@BrandonAnzaldi 使用
cURL会是更好的解决方案吗?
标签: javascript php node.js file-get-contents roblox