Дмитрий Г.
12 сообщений
#13 лет назад
Добрый день!

Нужно скачать .torrent файл с rutrackerOrg. Делаю на cURL. Работает ф-я авторизации, работает ф-я загрузки страниц сайта из под авторизированного пользавателя на сайте, но не работате ф-я загрузки торрент файла. Кто может подскажите в чем дело.
Вместро торрент файла сохраняет html страничку в которой написано "Для того чтобы скачать файл зайдите на страничку АДРЕС СТРАНИЦЫ".


Вот код функуций
<?php
setlocale(LC_ALL, 'ru_RU.UTF-8');
$curl = authorithationSite('brilliantcontrac', 'qwaszx');
$contents = downloadWebPage(';, $curl);
echo iconv('windows-1251', 'utf-8', $contents);
downloadHttpFile(';, 'my.torrent', $curl, ';);



#authoritha into web site via cURL
function authorithationSite($loginSite, $passwordSite) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ';);
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');
curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_REFERER, ';);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'redirect=index.php&login_username=' . $loginSite .'&login_password=' . $passwordSite . '&ses_short=1&login=Вход&cap_sid=CHdn1Pu2oItPf0NHn1pi&cap_code_19e5da1981d8b898bd5a5e841169155e=by4');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$contents = curl_exec($curl);
$contents = iconv('windows-1251', 'utf-8', $contents);

#show downloaded web page
#echo $contents;

return $curl;
}

#download web page via cURL
function downloadWebPage($address, $curl) {
curl_setopt($curl, CURLOPT_URL, $address);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($curl);

#show downloaded web page
#echo $contents;

return $contents;
}

#download http file via cURL
function downloadHttpFile($address, $fileName, $curl, $CURLOPT_REFERER) {
$path = './' . $fileName;

curl_setopt($curl, CURLOPT_URL, $address);
curl_setopt($curl, CURLOPT_REFERER, $CURLOPT_REFERER);

$data = curl_exec($curl);

file_put_contents($path, $data);
}
?>
Дмитрий Г.
12 сообщений
#13 лет назад
Если в обозреватели отключить исполнение JS скриптов, то скачать файл не получится. Если кто разбирается в javascript то объясните, что делает этот код. Только подробно объясните

<script type="text/javascript"> 
var postImg_MaxWidth = screen.width - 220;
var postImgAligned_MaxWidth = Math.round(screen.width/3);
var hidePostImg = false;

function initPost(context)
{
$('span.post-hr', context).html('<hr align="left" />');
initQuotes(context);
initExternalLinks(context);
initPostImages(context);
initSpoilers(context);
}
function initQuotes(context)
{
$('div.q', context).each(function(){
var $q = $(this);
var name = $(this).attr('head');
$q.before('<div class="q-head">'+ (name ? '<b>'+name+'</b> писал(а):' : '<b>Цитата:</b>') +'</div>');
});
}
function initPostImages(context)
{
if (hidePostImg) return;
var $in_spoilers = $('div.sp-body var.postImg', context);
$('var.postImg', context).not($in_spoilers).each(function(){
var $v = $(this);
var src = $v.attr('title');
var $img = $('<img src="'+ src +'" class="'+ $v.attr('className') +'" alt="pic" />');
$img = fixPostImage($img);
var maxW = ($v.hasClass('postImgAligned')) ? postImgAligned_MaxWidth : postImg_MaxWidth;
$img.bind('click', function(){ return imgFit(this, maxW); });
if (user.opt_js.i_aft_l) {
$('#preload').append($img);
var loading_icon = '<a href="'+ src +'" target="_blank"><img src="http://static.rutracker.org/templates/default/images/loading_3.gif" alt="" /></a>';
$v.html(loading_icon);
if ($.browser.msie) {
$v.after('<wbr>');
}
$img.one('load', function(){
imgFit(this, maxW);
$v.empty().append(this);
});
}
else {
$img.one('load', function(){ imgFit(this, maxW) });
$v.empty().append($img);
if ($.browser.msie) {
$v.after('<wbr>');
}
}
});
}
function initSpoilers(context)
{
$('div.sp-body', context).each(function(){
var $sp_body = $(this);
var name = $.trim(this.title) || 'скрытый текст';
this.title = '';
var $sp_head = $('<div class="sp-head folded clickable">'+ name +'</div>');
$sp_head.insertBefore($sp_body).click(function(e){
if (!$sp_body.hasClass('inited')) {
initPostImages($sp_body);
var $sp_fold_btn = $('<div class="sp-fold clickable"></div>').click(function(){
$.scrollTo($sp_head, { duration:200, axis:'y', offset:-200 });
$sp_head.click().animate({opacity: 0.1}, 500).animate({opacity: 1}, 700);
});
$sp_body.prepend('<div class="clear"></div>').append('<div class="clear"></div>').append($sp_fold_btn).addClass('inited');
}
if (e.shiftKey) {
e.stopPropagation();
e.shiftKey = false;
var fold = $(this).hasClass('unfolded');
$('div.sp-head', $($sp_body.parents('td'))).filter( function(){ return $(this).hasClass('unfolded') ? fold : !fold } ).click();
}
else {
$(this).toggleClass('unfolded');
$sp_body.slideToggle('fast');
}
});
});
}
function initExternalLinks(context)
{
$("a.postLink:not()", context).attr({ target: '_blank' });
}
function fixPostImage ($img)
{
var banned_image_hosts = /imagebanana|hidebehind/i; // imageshack
var src = $img.src;
if (src.match(banned_image_hosts)) {
$img.wrap('<a href="'+ this.src +'" target="_blank"></a>').attr({ src: "http://static.rutracker.org/smiles/tr_oops.gif", title: "Прочтите правила выкладывания скриншотов!" });
}
return $img;
}
$(function(){
$('div.post_body, div.signature').each(function(){ initPost( $(this) ) });
});
</script>

<script type="text/javascript">
var BB = {};
var BB_ROOT = "./";
var cookieDomain = ".rutracker.org";
var cookiePath = "/forum/";
var cookieSecure = 0;
var cookiePrefix = "bb_";
var LOGGED_IN = 1;
var InfoWinParams = 'width=780,height=510,resizable=yes';

var user = {
opt_js: {"only_new":0,"h_flag":0,"h_av":0,"h_rnk_i":0,"h_post_i":0,"i_aft_l":0,"h_smile":0,"h_sig":0,"sp_op":0,"tr_tm":0,"h_cat":""},

set: function(opt, val, days, reload) {
this.opt_js = val;
setCookie('opt_js', $.toJSON(this.opt_js), days);
if (reload) {
window.location.reload();
}
}
}

$(function(){
$('a.dl-stub').each(function(){
var $a = $(this);
var href = $a.attr('href');
var t_id = href.slice( href.lastIndexOf('=')+1 );
var event = ($.browser.opera) ? 'mouseover' : 'mousedown';
$a.bind(event, function(){
setCookie('bb_dl', t_id, 'SESSION')
});
$a.click(function(){
$('#dl-form').attr('action', href);
$('#dl-form').submit();
return false;
});
});
$('form.tokenized').append('<input type="hidden" name="form_token" value="2381f145ce5a78950a820bee04270ce5" />');
ajax.form_token = '2381f145ce5a78950a820bee04270ce5';
$("div.jumpbox").html('\
<span id="jumpbox-container"> \
<select id="jumpbox"> \
<option id="jumpbox-title" value="-1">&nbsp;&raquo;&raquo; Выберите форум для перехода &nbsp;</option> \
</select> \
</span> \
<input id="jumpbox-submit" type="button" value="Перейти" /> \
');
$('#jumpbox-container').one('click', function(){
$('#jumpbox-title').html('&nbsp;&nbsp; Загружается... &nbsp;');
var jumpbox_src = './../html/ajax/' + (1 ? 'jumpbox_user.html' : 'jumpbox_guest.html');
$(this).load(jumpbox_src);
$('#jumpbox-submit').click(function(){ window.location.href='./viewforum.php?f='+$('#jumpbox').val(); });
});
});

var ajax = new Ajax(';, 'POST', 'json');

function getElText (e)
{
var t = '';
if (e.textContent !== undefined) {
t = e.textContent;
}
else if (e.innerText !== undefined) {
t = e.innerText;
}
else {
t = jQuery(e).text();
}
return t;
}
function escHTML (txt) {
return txt.replace(/</g, '&lt;');
}
function cfm (txt)
{
return window.confirm(txt);
}
function post2url (url, params) {
params = params || {};
var f = document.createElement('form');
f.setAttribute('method', 'post');
f.setAttribute('action', url);
params = '2381f145ce5a78950a820bee04270ce5';
for (var k in params) {
var h = document.createElement('input');
h.setAttribute('type', 'hidden');
h.setAttribute('name', k);
h.setAttribute('value', params);
f.appendChild(h);
}
document.body.appendChild(f);
f.submit();
return false;
}
</script>
Дмитрий Г.
12 сообщений
#13 лет назад
Всем бооольшое спс все сделал опять сам ))
Андрей К.
1172 сообщения
#13 лет назад
Пожалуйста, всегда рады сделать проект по парсингу за спасибо.
Владимир М.
578 сообщений
#13 лет назад
Да, и от меня пожалста )
Юрьевич К.
328 сообщений
#13 лет назад
Цитата ("GeniusIsSimple"):
Всем бооольшое спс все сделал опять сам ))

клёвый копирайт. спасибо и тебе
Кирилл Е.
2817 сообщений
#13 лет назад
Цитата ("GeniusIsSimple"):
Только подробно объясните

Какой хоть бюджет был?
Владимир М.
578 сообщений
#13 лет назад
Цитата ("kirilev"):
Какой хоть бюджет был?

++

я думаю он себе еще и отзыв напишет
Андрей Халецкий
3563 сообщения
#13 лет назад
Так от чего же решение не выложил ;-)

PS. Это не подскажите называется - это называется сделайте.