Php Curl和gotomeeting.com

Php Curl和gotomeeting.com,php,curl,Php,Curl,我正在尝试使用PHP Curl来自动注册 根据人们所做的更正,我使用的是: <? $array=array( 'Name_First'=>'Steve', 'Name_Last'=>'Jobs', 'Email'=>'steve@jobs.com', 'Template'=>'island/webinar/registration.tmpl', 'Form'=>'webinarRegistrationFo‌​rm',

我正在尝试使用PHP Curl来自动注册

根据人们所做的更正,我使用的是:

<?

$array=array(
    'Name_First'=>'Steve',
    'Name_Last'=>'Jobs',
    'Email'=>'steve@jobs.com',
    'Template'=>'island/webinar/registration.tmpl',
    'Form'=>'webinarRegistrationFo‌​rm',
    'WebinarKey'=>'432624022',
    'ViewArchivedWebinar'=>'false',
    'registrant'=>'',
    'RegistrantTimeZoneK‌​ey'=>'55',
);

function dump($logArray) {
    echo '<pre>';
    print_r($logArray);
    echo '</pre>';
}

function go2webinar($array){

    $url='https://www3.gotomeeting.com/en_US/island/webinar/registration.flow';
    $url1='https://www3.gotomeeting.com/register/432624022';

    $cookie='/therightpath/cookie';
    $query=http_build_query($array);
    $c=curl_init();

    curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1');
    curl_setopt($c,CURLOPT_URL,$url);    
    curl_setopt($c, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($c,CURLOPT_POST,count($array));
    curl_setopt($c,CURLOPT_POSTFIELDS,$query);
    curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($c, CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($c, CURLOPT_COOKIEFILE,$cookie);
    curl_setopt($c, CURLOPT_COOKIEJAR,$cookie);
    curl_setopt($c, CURLOPT_REFERER,$url1);

    $r=curl_exec($c);//result
    dump(curl_getinfo($c));

    if(curl_errno($c)) return curl_error($c);
    else{
        curl_close($c);
        return trim($r);
    }
}

//GotoMeeting
echo go2webinar($array);

然而,我现在得到了一个“网络研讨会不可用”页面…

这是工作脚本,我把它写得太硬了,但是你应该知道什么不起作用

  • 使用
    curl\u setopt($c,CURLOPT\u FOLLOWLOCATION,1)
  • 用户代理
    curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0(windowsnt 6.1;WOW64;rv:9.0.1)Gecko/20100101 Firefox/9.0.1')
  • 始终使用firebug/tamper数据找到发布的正确参数
  • 你应该发布到
    $url='ww3.gotomeeting.com/en_US/island/webinar/registration.flow'
    不是
    $url1='www3.gotomeeting.com/register/432624022'
    使用$url1作为推荐人

    $query=“Template=island%2Webinar%2Registration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchiveWebinar=false®istrant=&RegistrantTimeZoneKey=55&Name\u First=BobS&Name\u Last=GnomW&Email=asas%40cc.com&RegistrantTimeZoneKey=55”

    函数curlit(){
    $url='1https://www3.gotomeeting.com/en_US/island/webinar/registration.flow';
    $url1=$https://www3.gotomeeting.com/register/432624022';
    $mypath=getcwd();
    $mypath=preg\u replace(“/\/”、“/”、$mypath);
    $cookie=“$mypath/cookie.txt”;
    $query=“Template=island%2Webinar%2Registration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchiveWebinar=false®istrant=&RegistrantTimeZoneKey=55&Name\u First=BobS&Name\u Last=GnomW&Email=asas%40cc.com&RegistrantTimeZoneKey=55”;
    $c=curl_init();
    curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0(windowsnt 6.1;WOW64;rv:9.0.1)Gecko/20100101 Firefox/9.0.1');
    curl_setopt($c,CURLOPT_URL,$URL);
    curl_setopt($c,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($c,CURLOPT_POST,count($array));
    curl_setopt($c,CURLOPT_POSTFIELDS,$query);
    curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($c,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($c,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($c,CURLOPT_COOKIEFILE,$cookie);
    curl_setopt($c,CURLOPT_COOKIEJAR,$cookie);
    curl_setopt($c,CURLOPT_REFERER,$url1);
    $r=curl_exec($c);//结果
    转储(curl_getinfo($c));
    if(curl_errno($c))返回curl_error($c);
    否则{
    收尾费($c);
    返回修剪($r);
    }
    }
    函数转储($logArray){
    回声“;
    打印(logArray);
    回声“;
    }
    //GotoMeeting
    卷曲();
    ?>
    

  • 这是工作脚本,我把它编得太硬了,但是你应该知道什么不工作

  • 使用
    curl\u setopt($c,CURLOPT\u FOLLOWLOCATION,1)
  • 用户代理
    curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0(windowsnt 6.1;WOW64;rv:9.0.1)Gecko/20100101 Firefox/9.0.1')
  • 始终使用firebug/tamper数据找到发布的正确参数
  • 你应该发布到
    $url='ww3.gotomeeting.com/en_US/island/webinar/registration.flow'
    不是
    $url1='www3.gotomeeting.com/register/432624022'
    使用$url1作为推荐人

    $query=“Template=island%2Webinar%2Registration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchiveWebinar=false®istrant=&RegistrantTimeZoneKey=55&Name\u First=BobS&Name\u Last=GnomW&Email=asas%40cc.com&RegistrantTimeZoneKey=55”

    函数curlit(){
    $url='1https://www3.gotomeeting.com/en_US/island/webinar/registration.flow';
    $url1=$https://www3.gotomeeting.com/register/432624022';
    $mypath=getcwd();
    $mypath=preg\u replace(“/\/”、“/”、$mypath);
    $cookie=“$mypath/cookie.txt”;
    $query=“Template=island%2Webinar%2Registration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchiveWebinar=false®istrant=&RegistrantTimeZoneKey=55&Name\u First=BobS&Name\u Last=GnomW&Email=asas%40cc.com&RegistrantTimeZoneKey=55”;
    $c=curl_init();
    curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0(windowsnt 6.1;WOW64;rv:9.0.1)Gecko/20100101 Firefox/9.0.1');
    curl_setopt($c,CURLOPT_URL,$URL);
    curl_setopt($c,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($c,CURLOPT_POST,count($array));
    curl_setopt($c,CURLOPT_POSTFIELDS,$query);
    curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($c,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($c,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($c,CURLOPT_COOKIEFILE,$cookie);
    curl_setopt($c,CURLOPT_COOKIEJAR,$cookie);
    curl_setopt($c,CURLOPT_REFERER,$url1);
    $r=curl_exec($c);//结果
    转储(curl_getinfo($c));
    if(curl_errno($c))返回curl_error($c);
    否则{
    收尾费($c);
    返回修剪($r);
    }
    }
    函数转储($logArray){
    回声“;
    打印(logArray);
    回声“;
    }
    //GotoMeeting
    卷曲();
    ?>
    

  • 尝试使用curl_setopt($c,CURLOPT_FOLLOWLOCATION,1);还可以使用篡改数据来检查实际的查询参数,我看到的比您试图发布的更多,$query=“Template=island%2Fwebinar%2Fregistration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchiveWebinar=false®istrant=&RegistrantTimeZoneKey=55&Name_First=BobS&Name_last=GnomW&email=ass%40cc.com&RegistrantTimeZoneKey=55”;这是你参考的一个屏幕截图。你检查过cookies文件是否真的被写入了吗?使用我的脚本作为参考,它可以工作..你应该发布到$url='';不是$url1='';使用$url1作为参考。尝试使用curl_setopt($c,CURLOPT_FOLLOWLOCATION,1);还可以使用篡改数据检查实际的查询参数,我看到的比您试图发布的更多,$query=“Template=island%2Fwebinar%2Fregistration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchiveWebinar=false®
    # Netscape HTTP Cookie File
    # http://curl.haxx.se/rfc/cookie_spec.html
    # This file was generated by libcurl! Edit at your own risk.
    
    .gotomeeting.com    TRUE    /   TRUE    1371763493  g2mVisitor  FirstVisit%3D1340218507523%26LastVisit%3D1340227493492%26RSN%3DDEFAULT
    www3.gotomeeting.com    FALSE   /   TRUE    0   g2mSession  SessionInfo%3D200000000139397572%253A2B00BFBA6275B45
    www3.gotomeeting.com    FALSE   /   FALSE   0   JSESSIONID  abc6tY1HKr4Hh9l-3plGt
    
     function curlit(){
    
        $url = 'https://www3.gotomeeting.com/en_US/island/webinar/registration.flow';
        $url1='https://www3.gotomeeting.com/register/432624022';
    
        $mypath = getcwd();
                $mypath = preg_replace('/\\\\/', '/', $mypath);
                $cookie = "$mypath/cookie.txt";
            $query="Template=island%2Fwebinar%2Fregistration.tmpl&Form=webinarRegistrationForm&WebinarKey=432624022&ViewArchivedWebinar=false&registrant=&RegistrantTimeZoneKey=55&Name_First=BobS&Name_Last=Gnoomw&Email=asas%40cc.com&RegistrantTimeZoneKey=55";
            $c=curl_init();
    
            curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1');
            curl_setopt($c,CURLOPT_URL,$url);    
            curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($c,CURLOPT_POST,count($array));
            curl_setopt($c,CURLOPT_POSTFIELDS,$query);
            curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
            curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($c, CURLOPT_COOKIEFILE, $cookie);
            curl_setopt($c, CURLOPT_COOKIEJAR, $cookie);
            curl_setopt($c, CURLOPT_REFERER, $url1);
            $r=curl_exec($c);//result
            dump(curl_getinfo($c));
    
            if(curl_errno($c)) return curl_error($c);
            else{
                curl_close($c);
                return trim($r);
            }
        }
        function dump($logArray) {
            echo "<pre>";
            print_r($logArray);
            echo "</pre>";
        }
    
        //GotoMeeting
        curlit();
    
        ?>