我正在使用 curl 发布到 Web 表单,但我在使用单选按钮时遇到问题。我将值传递给参数,但是当我拨打电话时,站点回复告诉我必须选择一个选项。我认为有一些javascript验证要求checked属性。有什么形式可以绕过这个吗?也许设置检查属性,然后制作卷曲帖子?这是表单的 html 代码:
<div class="unit"><input type="radio" tabindex="11" value="4" id="atrib_1" name="attr_frete" class="radio_bt"></div> <label for="atrib_gratis" class="radio_label">Flete 1</label> <div class="unit"><input type="radio" tabindex="11" value="5" id="atrib_2" name="attr_frete" class="radio_bt"></div> <label for="atrib_gratis" class="radio_label">Flete 2</label></div>
这是 PHP 中要发布的代码:
$parametros_post = array('STEP'=>$value1,'qb4_cat_id' =>$value2,'title'=>$model->Titulo,'description'=>$model->Descripcion,'tag_1' =>'','tag_2' =>'','tag_3' =>'','tag_4' =>'','tag_5' =>'','tag_6' =>'','attrib_34' =>'414','dinheiro' =>'true','deposito-bancario' =>'false','cheque' =>'false','cartao-credito' =>'false','combinar' =>'false','bb_file_input' =>$foto1,'preco' =>$model->Precio,'qt_estoque' =>'1','attr_frete' =>'5');
$result = $this->PostCurl("http://www.site.com/publicar-anuncio-gratis.html?sent=true",$parametros_post);
function PostCurl($url,$parametros_post){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Accept-Language: es-es,en"));
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$parametros_post);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt');
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
$rerror = curl_error($ch);
curl_close($ch);
if ($rerror != ""){
return $rerror;
}
else
return $result;
}
你想错了。没有 Javascript 干扰你的 curl 请求。它都是服务器端的,在分析要用curl发送的表单时,您可能错过了一些现在缺少的重要字段。
如果您使用原始表单,发布请求是什么样子的?当你使用卷曲时它是什么样子的?如果你比较这两者,你应该发现区别。
如果没有,您可能会怀疑正在进行一些针对自动请求的检查,但目前还没有证据。