0

Curl を使用してhttps://www.reporo.com/login.phpにログインしようとしています。私が使用しているコードは次のとおりです。

  <?php
function createPostString($aPostFields) {
    foreach ($aPostFields as $key => $value) {
        $aPostFields[$key] = urlencode($key . '=' . $value);
    }

    return urlencode(implode('&', $aPostFields));
}

$postFields['username'] = 'login';
$postFields['password'] = 'pass';
$postFields['submit'] = ' ';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://www.reporo.com/login.php');
curl_setopt($curl, CURLOPT_REFERER, 'https://www.reporo.com/login.php');
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS,  createPostString($postFields));

curl_exec($curl);
header('Location: https://www.reporo.com/analytics/dashboard.php');
curl_close($curl)


?>

スクリプトを使用すると、 http://best-payroll-services.info/adder/login.phpにリダイレクトされます。問題はどこだ ?

var_dump(curl_getinfo($c)) の後、私は持っています:

'url' => string 'https://www.reporo.com/login.php' (length=32)
  'content_type' => string 'text/html' (length=9)
  'http_code' => int 200
  'header_size' => int 382
  'request_size' => int 192
  'filetime' => int -1
  'ssl_verify_result' => int 20
  'redirect_count' => int 0
  'total_time' => float 0.843
  'namelookup_time' => float 0
  'connect_time' => float 0.109
  'pretransfer_time' => float 0.531
  'size_upload' => float 255
  'size_download' => float 3233
  'speed_download' => float 3835
  'speed_upload' => float 302
  'download_content_length' => float 3233
  'upload_content_length' => float 255
  'starttransfer_time' => float 0.655
  'redirect_time' => float 0
  'certinfo' => 
    array
      empty
  'redirect_url' => string '' (length=0)

ご挨拶。

4

3 に答える 3

1

以下は、Reporo サイトにログインし、特定の日付 (URL で指定) の全体的な広告主統計をダウンロードするために私が作成したスクリプトです。これはあなたが探しているものだと確信しています。

// Login & download stats in CSV format
function get_stats($login_url, $username, $password, $login_button, $csv_title, $download_url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $login_url);
    $post_fields = 'username='.urlencode($username).'&password='.urlencode($password);
    // Some sites don't send this variable, hence the check
    if(trim(urlencode($login_button)) != ''){
        $post_fields .= '&'.$login_button.'='.$login_button;
    }
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
    curl_exec($ch);

    // Prevent the script from timing out
    set_time_limit(0);

    $fp = fopen (dirname(__FILE__) . '/'.$csv_title, 'w+');//This is the file where we save the information
    curl_setopt($ch, CURLOPT_URL, $download_url);//Here is the file we are downloading
    curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);
}

// Set REPORO variables
$rep__login_url = 'https://www.reporo.com/login.php';
$rep_un = 'USERNAME';
$rep_pw = 'PASSWORD';
$rep_login_butt = 'submit';
$rep_csv = 'reporo_stats.csv';
// In the url, list= YOUR CAMPAIGN IDS (comma seperated)
$rep_dl_url = 'https://www.reporo.com/analytics/data.php?type=AdvertiserEntity&start=2012-10-17&end=2012-10-17&entity=client&list=1234,5678,9101,1121,3141&format=csv';

// Call get_stats function
get_stats($rep__login_url, $rep_un, $rep_pw, $rep_login_butt, $rep_csv, $rep_dl_url);
于 2012-10-17T15:39:09.497 に答える
1

リダイレクト先のウェブサイトはあなたのものだと思います。リダイレクトするコードは次の行だけだからです。

header( 'Location: '.$_SERVER[ "PHP_SELF" ] );

問題は次のとおりだと思います。

if ( file_exists( 'cookies.txt' ) )

そのファイルは存在しないように見えるため、実行中です。

connect( 'https://www.reporo.com/login.php', $post_string );
str_replace( '/', '', $_SERVER[ "PHP_SELF" ] );
header( 'Location: '.$_SERVER[ "PHP_SELF" ] );
于 2012-09-08T18:51:29.357 に答える