사이트에 로그인 한 다음 페이지 중 하나에 가서 데이터를 검색하려고합니다. 승인 문제가 있습니다. 샘플 코드 : 내가 메인 페이지 (안 하위)로 리디렉션하고이 쿼리의 결과로PHP 및 CURL을 사용하여 로그인 및 다운로드
$loginUrl = 'https://strona.pl/authorization'; //action from the login form
$loginFields = array('username'=>'[email protected]', 'password'=>'haslo'); //login form field names and values
$remotePageUrl = 'https://strona.pl/pdstrona'; //url of the page you want to save
$login = getUrl($loginUrl, 'post', $loginFields); //login to the site
$remotePage = getUrl($remotePageUrl); //get the remote page
function getUrl($url, $method='', $vars='') {
$ch = curl_init();
if ($method == 'post') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt');
$buffer = curl_exec($ch);
//jeżeli pojawił się błąd to go wyświetlimy
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
return $buffer;
print $status;
}
// wyłącza pokazywanie błędów dla funkcji loadHTML
libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom ->strictErrorChecking = FALSE;
$dom->loadHTML($remotePage);
$xpath = new DOMXpath($dom);
. 중요한 것은 인코딩 된 형태로 스크립트에 전자 메일 주소를 입력하는 것입니다. 예 : 이메일 %의 40mojmail.pl
편집
좋아 - 나는 몇 가지 정보를 추가합니다. 저는 출판사이고 afilo.pl로 일하고 있습니다. 일일 요금 확인은 매우 힘들 기 때문에 하루에 한 번씩 데이터를 수집하고 변경 사항을 알려주는 스크립트를 준비하고 싶습니다.
데이터를 가져올 수 없습니다. 브라우저의 샘플 쿠키 : 설정 쿠키 : PHPSESSID = jat102p33s0pmfairri1qiih24; 만료 = 2011 년 12 월 25 일 오후 9시 16 분 40 초 GMT; 경로 = /; 도메인 =. Afilo.pl
코드를 수정했지만 여전히 작동하지 않습니다.
loginUrl = 'https://opentrack.afilo.pl/logowanie'; //action from the login form
$loginFields = array('loginemail'=>'.......','loginhaslo'=>'........');
//login form field names and values
$remotePageUrl = 'https://opentrack.afilo.pl/partner/programy-lista'; //url of the page you want to save
$login = getUrl($loginUrl, 'post', $loginFields); //login to the site
$remotePage = getUrl($remotePageUrl); //get the remote page
function getUrl($url, $method='', $vars='') {
$ch = curl_init();
if ($method == 'post') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
}
session_start();
$strCookie = session_name() . '=' . $_COOKIE[ session_name() ] . '; path=/; domain=.afilo.pl';
session_write_close();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt');
//curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIE, $strCookie);
$buffer = curl_exec($ch);
//je¿eli pojawi³ siê b³¹d to go wyœwietlimy
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
return $buffer;
print $status;
}
사이트가 프로그래밍 방식으로 데이터에 액세스하기를 원한다면 API –
을 제공 할 것입니다. :) 제목에 실수를했습니다. 단순히 로그인하여 하위로 이동 한 다음 데이터를 다운로드하려고합니다. 페이지가 API를 제공하지 않습니다. 메일 주소를 로그인으로 사용하는 페이지에서 코드가 작동하지 않는 것으로 나타났습니다. – user3112825