种子文件未下载。
出现错误:“只能从跟踪器页面下载。尝试转到包含分发的页面,然后单击链接下载 torrent 文件。”
已经可以尝试的一切都没有结果。
发布工作代码
<?php
function downloadFile($data, $dataAuth)
{
// Авторизация если нет куки файла
if(!file_exists($dataAuth['cookieFile']))
{
$ch1 = curl_init($dataAuth['login_url']);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $dataAuth['post']);
curl_setopt($ch1, CURLOPT_COOKIEJAR, $dataAuth['cookieFile']);
curl_exec($ch1);
curl_close($ch1);
}
// Скачиваем файл
$ch = curl_init($data['url']);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $data['referer_header']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $dataAuth['cookieFile']);
curl_setopt($ch, CURLOPT_AUTOREFERER, 0);
curl_setopt($ch, CURLOPT_REFERER, $data['urlReferer']);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
// curl_setopt($ch, CURLOPT_FILE, $handle = fopen($file, 'a'));
echo $out = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
echo '<pre>';
print_r($error);
echo '</pre>';
}
// Данные для скачивания торент файта
$data['url'] = 'http://pornolab.net/forum/dl.php?t=2317671';
$data['urlReferer'] = 'http://pornolab.net/forum/viewtopic.php?t=2317671';
$data['fileName'] = 'D:\PornFidelity.torrent';
$data['referer_header'] = [
"Referer:".$data['urlReferer'],
"Host:pornolab.net",
];
// Данные для авторизации
$dataAuth['login_url'] = 'http://pornolab.net/forum/login.php';
$dataAuth['cookieFile'] = 'D:\cookie[pornolabnet].txt';
$dataAuth['post']['login_username'] = 'testa123123';
$dataAuth['post']['login_password'] = '123123';
$dataAuth['post']['login'] = 'Вход';
// Запускаем функцию
downloadFile($data, $dataAuth);
需要添加更多标题。在网络选项卡的浏览器中打开控制台,找到下载请求留下的标头。将它们全部添加到您的函数中,它应该会有所帮助。从 origin、host、referer 等标头开始。如果有像“X-Csrf-Token”、“X-Requested-With”这样的标头——它们也必须是伪造的