Witam,
Kupiłem konto na chomikuj z dużą ilością kategorii i podkategorii.
Chciałbym zmienić masowo opis kategorii za pomocą cURL-a oraz ich nazwę.
Logowanie zrobiłem, wszystko cacy, ale coś mi nie gra przy wysyłaniu zedytowanego posta.
// Logowanie
$Ref = 'http://chomikuj.pl/';
$adres = 'http://chomikuj.pl/action/Login/TopBarLogin';
$Post = 'ReturnUrl=&Login='.$Login.'&Password='.$Haslo.'&__RequestVerificationToken=';
$pobranie = otwieraniewwwpost($adres,$Post,$Ref);
// Przechodzenie na strone katalogu w chomiku i pobieranie request-a
$Ref = 'http://chomikuj.pl/';
$adres = 'http://chomikuj.pl/warezmistrz.boo.pl/Dokumenty';
$Post = '';
$pobranie = otwieraniewwwpost($adres,$Post,$Ref);
preg_match('#<input name="__RequestVerificationToken" type="hidden" value="([^"]*)" />#', $pobranie, $kod);
$token = $kod['1'];
// Dodawanie folderu ( okienko )
$Refzm = 'http://chomikuj.pl/warezmistrz.boo.pl/';
$adreszm = 'http://chomikuj.pl/action/folderOptions/newFolder';
$Postzm = 'chomikId=470642&folderId=1&__RequestVerificationToken=';
$zmianaop = postwwwajax($adreszm,$Postzm,$Refzm,$token);
// Próba dodania nowego okienka
$Refzm = 'http://chomikuj.pl/action/folderOptions/newFolder';
$adreszm = 'http://chomikuj.pl/action/FolderOptions/NewFolderAction';
$Postzm = 'FolderId=1&ChomikId=470642&FolderName=lolxd&AdultContent=false&NewFolderSetPassword=false&Password=&__RequestVerificationToken=jD17Xbnqv63MUfDdrN4zT2RE8MMMJhgbT4BogLx5COwXKM81Ev1ia%2BLZEaOILlQzzLYwAx%2BRzxPte4c2sp%2BNR%2F6AUmSVzDGSa%2Fy4ERejna4PR%2FKSsSRAQi4OFubWPKkzjB62bg%3D%3D';
echo $zmianaop = postwwwajax($adreszm,$Postzm,$Refzm,$token);
To jest kod index.php.
Co prawda tutaj widać że ten __RequestVerificationToken daje z palca, ale później i tak to nie ma znaczenia w ciele funkcji bo przesyłany jest świeżo pobrany.
Ciało funkcji
function otwieraniewwwpost($adres,$post,$refek){
$przegladarka='User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5';
$cookie = 'ciasteczka';
$adres = str_replace(" ","",$adres);
$adres = str_replace("
","", $adres);
$naglowki = array(
'Accept:'
);
$chf = curl_init();
curl_setopt($chf, CURLOPT_URL, $adres);
curl_setopt($chf, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($chf, CURLOPT_HTTPHEADER, $naglowki );
curl_setopt($chf, CURLOPT_USERAGENT, $przegladarka);
curl_setopt($chf, CURLOPT_REFERER, $refek);
curl_setopt($chf, CURLOPT_POST, 1);
curl_setopt($chf, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/'.$cookie.'.txt');
curl_setopt($chf, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/'.$cookie.'.txt');
curl_setopt($chf, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($chf, CURLOPT_FOLLOWLOCATION, 1 );
@curl_setopt($chf, CURLOPT_POSTFIELDS, $post );
$danef = curl_exec($chf);
curl_close($chf);
return $danef;
}
function postwwwajax($adres,$postVariables,$ref,$token){
$cookie = 'ciasteczka';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/'.$cookie.'.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/'.$cookie.'.txt');
curl_setopt($ch, CURLOPT_URL, $adres);
curl_setopt($ch, CURLOPT_REFERER, 'https://www.chomikuj.pl/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: */*","Accept-Language: pl,en-US;q=0.7,en;q=0.3","Accept-Encoding: gzip, deflate","Content-Type: application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With: XMLHttpRequest", "__RequestVerificationToken: ".$token));
$postVariables = json_encode(array('chomikId' => 470642,
'folderId' => 1,
'__RequestVerificationToken' => $token,
'FolderName' => 'zlecenie',
'AdultContent' => false,
'NewFolderSetPassword' => false));
//chomikId=470642&folderId=1&__RequestVerificationToken=
curl_setopt($ch, CURLOPT_POSTFIELDS, $postVariables);
//curl_setopt($ch, CURLOPT_URL, 'https://www.domain.com/ajax/getProductList');
curl_setopt($ch, CURLOPT_REFERER, $ref);
$webpage = curl_exec($ch);
curl_close($ch);
return $webpage;
}
I nie wiem co jest nie tak.
Jak widać dałem do hedera X-Requested-With: XMLHttpRequest bo to jest ajaxem przesyłane.
Dodałem json_encode i dalej nie działa.
Pomoże ktoś ?
W wyniku wykonania skryptu dostaje
{"Type":"Window","Title":"Błąd","Content":"Niestety podczas przetwarzania żądania wystąpił błąd.","refreshTopBar":false,"IsSuccess":true,"Data":null,"ContainsCaptcha":false,"trackingCodeJS":null}