2

次の一般的なコードを使用して、他の https サイトにログインし、フォームを使用してレコードを取得しますが、www.voip.ms では機能しないようです。私はテスト用アカウントを作成したので、もし誰かがそれを試して、私がどこを間違えたか教えてくれたら. (警告、サイトはあなたの IP アドレスを禁止するまで 4 回しか試行しません)

<?php
ini_set('max_execution_time', 300);
$username="meahmatt@aol.com"; 
$password="testaccount"; 
$url="https://www.voip.ms/m/login.php"; 
$cookie="cookie.txt"; 

$postdata = "col_email".$username."&col_password=".$password."&action=login&form1="; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 
curl_close($ch);
echo $result;
?>

また、CURLOPT_SSL_VERIFYPEER、TRUEを変更せずに設定しようとしました

4

2 に答える 2

1

必要に応じて、この機能を試すことができます。何度かお世話になりました。それでも問題が解決しない場合は、fiddler2 (fiddler2.com) を試してすべてのヘッダーを確認し、PHP でそれらを複製してみてください

ini_set('max_execution_time', 300);
$fields['col_email'] = "meahmatt@aol.com"; 
$fields['col_password'] = "testaccount"; 
$fields['action'] = "login"; 
$fields['form1'] = ""; 
$url = "https://www.voip.ms/m/login.php"; 
$html = get_html($url,$url,$fields);

function get_html($url,$ref='',$fields=array(),$cookie='cookie.txt'){
//  $proxyAddress = '127.0.0.1:8888';
    $ch = curl_init();
    touch($cookie);
    $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
    $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
    $header[] = "Cache-Control: max-age=0";
    $header[] = "Connection: keep-alive";
    $header[] = "Keep-Alive: 300";
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $header[] = "Accept-Language: en-us,en;q=0.5";
    $header[] = "Pragma: "; //browsers keep this blank.  
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows;U;Windows NT 5.0;en-US;rv:1.4) Gecko/20030624 Netscape/7.1 (ax)');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    if($proxyAddress != ''){
        curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
        curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
        curl_setopt($ch, CURLOPT_PROXY, $proxyAddress);
    }
    if(count($fields)>0){
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
        curl_setopt ($ch, CURLOPT_POST, 1); 
    }
    curl_setopt($ch, CURLOPT_REFERER, $ref);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
    $result = curl_exec ($ch);
    if(!$result){
        echo "cURL error number:" .curl_errno($ch);
        echo "cURL error:" . curl_error($ch);
        exit;
    }
    curl_close ($ch);
    return($result);
}
于 2013-09-13T15:15:02.723 に答える