【问题标题】:Update a subscriber in aweber with CURL => session expired使用 CURL => session expired 更新 aweber 中的订阅者
【发布时间】:2014-01-24 22:29:04
【问题描述】:

我正在尝试使用 Curl 更新 Aweber 中的一些自定义字段。 当我尝试传递 postfields 时,aweber 告诉我我的会话已过期。但是我可以登录并做其他员工没有这个问题。

也许问题出在没有表单并且要验证的按钮不是输入类型提交而是一个有一些js功能的按钮?但是我在 firebug 中查看“network”=> XHR,发送的链接与表单中的所有参数相同。

$str = 'data[submit]=1
&data[Lead][prev_stop_status]=0
&unsubscribe_lead=1
&data[Lead]['.$m.'][name]= name
&data[Lead]['.$m.'][email]='.$email.'
&data[Lead]['.$m.'][note]=control panel
&data[Lead]['.$m.'][datum1]=sdfg
&data[Lead]['.$m.'][datum2]=qsdfqsfd
&data[Lead]['.$m.'][datum3]=sdfgf
&data[Lead]['.$m.'][datum4]=zrtert
&data[Lead]['.$m.'][datum5]=dfgdf
&data[Lead]['.$m.'][name2]=sdfgsgf
&message_old=1
&data[Lead]['.$m.'][message]=1001
&sess_token='.$cookie'

这里的$m对应lead的id。

$url ='https://www.aweber.com/users/leads/edit/3266822/'.$m;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_REFERER, 'https://www.aweber.com/users/leads');

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);    
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies_file);        
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$str);  

echo curl_exec($ch);

希望足够清楚。我想发布一些来自 fireburg 的图片以帮助理解,但我需要更多的声誉点..

有人有想法吗?

编辑:这里是实时 http 标头的请求:

POST /users/leads/edit/3266822/59321794 data%5Bsubmit%5D=1&data%5BLead%5D%5Bprev_stop_status%5D=0&unsubscribe_lead=1&data%5BLead%5D%5B59321794%5D%5Bname%5D=blacky&data%5BLead% 5D%5B59321794%5D%5Bemail%5D=blackrunnnner%40gmail.com&data%5BLead%5D%5B59321794%5D%5Bnote%5D=+hf&data%5BLead%5D%5B59321794%5D%5Bdatum1%5D=stryrtyy&data%5BLead%5D%5B5932 %5D%5Bdatum2%5D=tttttttttt&data%5BLead%5D%5B59321794%5D%5Bdatum3%5D=sdsdfsdfsdfs&data%5BLead%5D%5B59321794%5D%5Bdatum4%5D=dsfgdsfgd&data%5BLead%5DzzDzz%55932%5DzzDzzDzz%55932%5DzzDzz%5B5932%5DzzDzz %5BLead%5D%5B59321794%5D%5Bname2%5D=lmkmlkllllll&message_old=1&data%5BLead%5D%5B59321794%5D%5Bmessage%5D=1&sess_token=d18b8246230780a51e967326cf687009e9cc2d81

这里是标题:

https://www.aweber.com/users/leads/edit/3266822/59321794

POST /users/leads/edit/3266822/59321794 HTTP/1.1

主机:www.aweber.com

用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0

接受:文本/html,/; q=0.01

接受语言:fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

接受编码:gzip、deflate

内容类型:application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

推荐人:https://www.aweber.com/users/leads

内容长度:619

Cookie:cookie_aweber_referrer_id=99; TS8fba11=0db6c7090ec415a2a74f5b65b8aeffc52c7ef8b9018afb4c52e3ecfbbd1b0f791761e990; __utma=121506007.931755370.1390668636.1390668636.1390668636.1; __utmb=121506007.2.10.1390668636; __utmc=121506007; __utmz=121506007.1390668636.1.1.utmgclid=COD4yK_kmbwCFTCWtAod7U4ApA|utmccn=(not%20set)|utmcmd=(not%20set)|utmctr=aweber; _ga=GA1.2.931755370.1390668636; AppCookie[cookie_support]=支持; TS8fba11_29=c7dae97d9386c44fe3317a881058edd12c7ef8b9018afb4c00000000000000000052e3eb6c; __ctxpop=1; AUTORESPSID=d18b8246230780a51e967326cf687009e9cc2d81; AppCookie[客户]=1; AppCookie[curlis]=teststeli; kvcd=1390668716223; km_ai=Km0KWrpCZfFJ0Q7ArZebQRtwxVE%3D; km_uq=; km_vs=1; km_lv=1390668716; km_ni=836900; ki_u=9560e337-a9a3-16a1-44d0-1060ea2aa10c; ki_t=1390668681618%3B1390668681618%3B1390668681618%3B1%3B1

连接:保持活动

编译指示:无缓存

缓存控制:无缓存

data%5Bsubmit%5D=1&data%5BLead%5D%5Bprev_stop_status%5D=0&unsubscribe_lead=1&data%5BLead%5D%5B59321794%5D%5Bname%5D=blacky&data%5BLead%5D%5B59321794%5D%5Bemail%5D=blackrunnnner %40gmail.com&data%5BLead%5D%5B59321794%5D%5Bnote%5D=+hf&data%5BLead%5D%5B59321794%5D%5Bdatum1%5D=stryrtyy&data%5BLead%5D%5B59321794%5D%5Bdatum2%5D=tttttttt&data%5BLead% 5D%5B59321794%5D%5Bdatum3%5D=sdsdfsdfsdfs&data%5BLead%5D%5B59321794%5D%5Bdatum4%5D=dsfgdsfgd&data%5BLead%5D%5B59321794%5D%5B59321794%5D%5Bdatum5%5D=zzzzzzD%5BLead%52%BLead%5D%5B94%D%52%94% 5D=lmkmlkllllll&message_old=1&data%5BLead%5D%5B59321794%5D%5Bmessage%5D=1&sess_token=d18b8246230780a51e967326cf687009e9cc2d81

HTTP/1.1 200 正常

日期:2014 年 1 月 25 日星期六 17:08:56 GMT

p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

到期:1997 年 7 月 26 日星期一 05:00:00 GMT

最后修改时间:2014 年 1 月 25 日星期六 17:08:57 GMT

缓存控制:无存储、无缓存、必须重新验证、无缓存

编译指示:无缓存,无缓存

变化:Accept-Encoding、User-Agent

内容编码:gzip

内容长度:164

保持活动状态:超时=3,最大值=100

连接:保持活动状态

内容类型:文本/纯文本

设置 Cookie:TS8fba11=75ec74303092e39b0609f650ba7394ad2c7ef8b9018afb4c52e3efa8bd1b0f791761e990;路径=/

【问题讨论】:

  • 你有重定向吗?因为在这种情况下,您可能还想指定一个 cookiejar 而不仅仅是一个 cookiefile。另外:在您发布的示例中,您正在向数据添加换行符,如果您将整个帖子字符串设为一行会发生什么?
  • 我如何知道我是否获得了重定向?我也尝试指定一个cookiejar,但结果是一样的。是的,我也尝试将所有内容都放在 1 行中。
  • 暂时禁用跟随位置并在输出中包含标题,这已经告诉你很多了。再说一遍:你可能会问 Awerber 的人出了什么问题,或者看看你是否可以用他们的 API 做你想做的事。
  • 是的,如果我没有找到,也许我会检查他们的 API..
  • 您是否正确获取了此变量&sess_token='.$cookie'

标签: curl php aweber


【解决方案1】:

你试过了吗?

<?php
//debug - remove in production!
error_reporting(E_ALL);
ini_set('display_errors', 1);
//debug end

$str = 'data[submit]=1
&data[Lead][prev_stop_status]=0
&unsubscribe_lead=1
&data[Lead]['.$m.'][name]= name
&data[Lead]['.$m.'][email]='.$email.'
&data[Lead]['.$m.'][note]=control panel
&data[Lead]['.$m.'][datum1]=sdfg
&data[Lead]['.$m.'][datum2]=qsdfqsfd
&data[Lead]['.$m.'][datum3]=sdfgf
&data[Lead]['.$m.'][datum4]=zrtert
&data[Lead]['.$m.'][datum5]=dfgdf
&data[Lead]['.$m.'][name2]=sdfgsgf
&message_old=1
&data[Lead]['.$m.'][message]=1001
&sess_token='.$cookie'

$url ='https://www.aweber.com/users/leads/edit/3266822/'.$m;
$cookies_file = "/tmp/cookie.txt";    

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_REFERER, 'https://www.aweber.com/users/leads');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);    
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies_file);        
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies_file);        
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $str);  
$server_output =  curl_exec($ch);

if ($server_output == "OK") { 
    echo "Post OK";
} else { 
    echo "Post NOT OK \n";
    echo $server_output;
}

?>

【讨论】:

  • 感谢您的帮助。我得到 POST 不正常。那是什么意思 ? url不好还是postfields?
  • 除此之外,您还遇到了哪些错误?我已经更新了答案并添加了 `$cookies_file = "/tmp/cookie.txt"; ,再试一次。
  • 我没有收到任何错误。只是 aweber 告诉我我的会话已过期。我的 $cookies_file 路径是 DIR.'/cookies.txt' 我已经在我的脚本中声明了它
  • 让我们试试这个,为 Firefox 安装 live http headers 插件,激活它并手动登录到 aweber。将标题复制并粘贴到您的答案中。这可能有助于我们了解错误在哪里。
  • 我更新了我的答案。问题是我可以获取页面并查看带有旧字段的表单,但未修改字段,并且不考虑我通过 url 发送的内容字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
相关资源
最近更新 更多