Foros del Web » Programando para Internet » PHP »

4yuda con CURL

Estas en el tema de 4yuda con CURL en el foro de PHP en Foros del Web. Hola a todos. Miren les hablo con la verdad me contrataron para hacer anuncios en mundoanuncio.com automaticamente y bueno lo estoy haciendo con CURL. Asi ...
  #1 (permalink)  
Antiguo 02/10/2011, 13:05
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
4yuda con CURL

Hola a todos.
Miren les hablo con la verdad me contrataron para hacer anuncios en mundoanuncio.com automaticamente y bueno lo estoy haciendo con CURL.

Asi que pues si me logran ayudar pues igual y nos repartimos el dinero.

El codigo es el siguiente

Código PHP:
Ver original
  1. <?php
  2. $data = array('categoria' => '21','titol' => 'dkdrjmvkj jmrjdremr rjdfm fjedmkrfjrmjfmgts frjr ftfkrdkmrmrjrkmrkmrkm','id_pais' => '2','descripcio' => 'dfdfbdgdvdfvfvdfvdfvdvfdfvdfvdfvvfdvvdsvdfvdfvdvdvdvdvdfvdbdvbfbd bb vfvvfvfvdfv','ciudad' => '','barrio' => '','opcio_especial' => '7','mail' => '[email protected]','preu' => '123');
  3. $a = curl_init();
  4. curl_setopt($a,CURLOPT_URL,"http://www.mundoanuncio.com/anunci_insert_run.php");
  5. curl_setopt($a,CURLOPT_HTTPHEADER, array('Expect:'));
  6. curl_setopt($a,CURLOPT_COOKIEFILE,'cookies.txt');
  7. curl_setopt($a,CURLOPT_COOKIEJAR,'cookies.txt');
  8. curl_setopt($a, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($a, CURLOPT_FOLLOWLOCATION, 1);
  10. curl_setopt($a, CURLOPT_POST, 1);
  11. curl_setopt($a,CURLOPT_POSTFIELDS,$data);
  12. echo curl_exec($a);
  13. ?>

Segun publica el anuncio pero la realidad es que no.
Creo que ya casi esta pero falta algo por ahi.
Igual comentar que esta pagina tiene un sistema llamado squid y como que impide el CURL.
  #2 (permalink)  
Antiguo 02/10/2011, 13:23
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: 4yuda con CURL

¿Haz verificado las cabeceras que son enviadas en el request?

Si estas dispuesto a dar una remuneración por la ayuda tal vez te convenga postearlo como una Oferta de Empleo en el foro correspondiente.
  #3 (permalink)  
Antiguo 02/10/2011, 13:26
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
Respuesta: 4yuda con CURL

Mas info
Siento que este formulario con este script tiene algo muy importante que ver con el echo de que no se inserte el anuncio
Como tiene un evento onsubmit y como este no es llamado nunca pues siento que hay algo
//No he estudiado bien Javascript

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. function enviar(frm){
  4.         //  Titulo
  5.         if (!stringHasMinimumSize(frm.titol.value,10))
  6.         {
  7.             frm.titol.focus();
  8.             return msgErr("El título ha de tener un mínimo de 10 carácteres");
  9.         }
  10.        if (!stringHasMinimumNumberOfLetters(frm.titol.value,5))
  11.        {
  12.             frm.titol.focus();
  13.             return msgErr('El titulo ha de tener como minimo 5 letras');
  14.         }
  15.         // Descripcion
  16.         if ( tinyMCE.get('descripcio').getContent().length < 30 )
  17.         {
  18.             return msgErr("La descripción del anuncio ha de tener un mínimo de 30 carácteres");
  19.         }
  20.         //  Codigo de seguridad
  21.         if (frm.security_code) {
  22.            if (frm.security_code.value.length == 0) {
  23.                 frm.security_code.focus();
  24.                return msgErr("Debe ingresar el código de seguridad.");
  25.            }
  26.         }
  27.  
  28.         error=0;
  29.  
  30.         if (frm.image !=undefined)
  31.         {
  32.             if (frm.image.value!='')
  33.             {
  34.                 ext=frm.image.value.substring(frm.image.value.length-4).toLowerCase();
  35.                 if((ext!='.jpg')&&(ext!='jpeg')&&(ext!='.gif')&&(ext!='.png'))
  36.                 {
  37.                     alert('Solo se permiten imágenes del tipo JPG, GIF o PNG');
  38.                     error=1;
  39.                 }
  40.             }
  41.         }
  42.  
  43.         if ((frm.image2 !=undefined)&&(error==0))
  44.         {
  45.             if (frm.image2.value!='')
  46.             {
  47.                 ext=frm.image2.value.substring(frm.image2.value.length-4).toLowerCase();
  48.  
  49.                 if((ext!='.jpg')&&(ext!='jpeg')&&(ext!='.gif')&&(ext!='.png'))
  50.                 {
  51.                     alert('Solo se permiten imágenes del tipo JPG, GIF o PNG');
  52.                     error=1;
  53.                 }
  54.             }
  55.         }
  56.        errorImgsMsg = '';
  57.        for (i=0; i < MAX_FILES + 1; i++) {
  58.            if (document.getElementById('desc_'+i+'_edited')) {
  59.                if (document.getElementById('desc_'+i+'_edited').value == 1) {
  60.                    data = document.getElementById('desc_'+i).value;
  61.                    if (Trim(data).length > 0) {
  62.                        if (!(data.length > 4 && data.length < 61)) {
  63.                            errorImgsMsg = 'La descripcion de la imagen '+ i +' debe tener entre 5 y 60 caracteres.';
  64.                            break;
  65.                        }
  66.                    }
  67.                }
  68.            }
  69.        }
  70.        if (errorImgsMsg != '') {
  71.            alert(errorImgsMsg);
  72.            error = 1;
  73.        }
  74.  
  75.         if ((frm.image2 !=undefined)&&(error==0))
  76.         {
  77.             if (frm.image2.value!='')
  78.             {
  79.                 ext=frm.image2.value.substring(frm.image2.value.length-4).toLowerCase();
  80.                 if((ext!='.jpg')&&(ext!='jpeg')&&(ext!='.gif')&&(ext!='.png'))
  81.                 {
  82.                     alert('Solo se permiten imágenes del tipo JPG, GIF o PNG');
  83.                     error=1;
  84.                 }
  85.             }
  86.         }
  87.        
  88.         //  Email:
  89.         if( frm.mail.value.length > 0 && ! validaEmail(frm.mail.value)  )
  90.         {
  91.             alert(JS_EMAIL_MAL_FORMADO);
  92.             frm.mail.focus()
  93.             return false;
  94.         }
  95.         else
  96.         {
  97.             frm.mail.value = checkeoDeDominio( frm.mail.value );
  98.         }
  99.  
  100.         if(error==0) {
  101.            // Si tengo seleccionada una provincia, entonces pongo en el action el urlbase de esa provincia, sino, la del pais
  102.            var drpPaises = window.document.getElementById('id_pais');
  103.            var drpProvincias = window.document.getElementById('id_prov');
  104.            if (drpProvincias.value != '0') {
  105.                frm.action = 'http://'+drpProvincias.options[drpProvincias.selectedIndex].getAttribute('ma_urlbase')+'/anunci_insert_run.php';
  106.            } else {
  107.                if (drpPaises.getAttribute('ma_urlbase')) {
  108.                    frm.action = 'http://'+drpPaises.getAttribute('ma_urlbase')+'/anunci_insert_run.php';
  109.                } else {
  110.                    frm.action = 'http://'+drpPaises.options[drpPaises.selectedIndex].getAttribute('ma_urlbase')+'/anunci_insert_run.php';
  111.                }
  112.            }
  113.             return true;
  114.        }
  115.  
  116.         return false;
  117.     }
  118.  
  119. //]]>
  120.  
  121.         <form action="/anunci_insert_run.php" name="form" class="form" method="post" enctype="multipart/form-data" onsubmit="if (!enviar(this)) { event.returnValue = false; event.cancelBubble = true; return false; }">
  122.         <p><input type="hidden" name="categoria" value="21" /></p>
  123.  
  124.         <p>
  125.             <label for="titol">Título:</label>
  126.             <input
  127.                type="text"
  128.                name="titol"
  129.                id="titol"
  130.                maxlength="128"
  131.                value=""
  132.                size="60" />
  133.         </p><p>
  134.             <label for='id_pais'>País:</label>
  135.             <select
  136.                name='id_pais'
  137.                id='id_pais'
  138.                onChange="actualiza_provincias(this.value, document.getElementById('sel_prov').value);"><option value="1" ma_urlbase="www.mundoanuncio.com" selected="selected">Todos</option>
  139. <option value='779268' ma_urlbase='www.mundoanuncio.com' >Afganistán</option>
  140. <option value='779300' ma_urlbase='www.mundoanuncio.com' >Egipto</option>
  141. <option value='779301' ma_urlbase='www.mundoanuncio.com' >Emiratos Árabes Unidos</option>
  142. <option value='779302' ma_urlbase='www.mundoanuncio.com' >Eritrea</option>
  143. <option value='779304' ma_urlbase='www.mundoanuncio.com' >Eslovenia</option>
  144. <option value='2' ma_urlbase='www.mundoanuncio.com' >España</option>
  145. <option value='13' ma_urlbase='www.mundoanuncio.com' >Estados Unidos</option>
  146. <option value='779305' ma_urlbase='www.mundoanuncio.com' >Estonia</option>
  147. <option value='779346' ma_urlbase='www.mundoanuncio.com' >Malasia</option>
  148. <option value='779347' ma_urlbase='www.mundoanuncio.com' >Malawi</option>
  149. <option value='779348' ma_urlbase='www.mundoanuncio.com' >Maldivas</option>
  150. <option value='779349' ma_urlbase='www.mundoanuncio.com' >Mali</option>
  151. <option value='779350' ma_urlbase='www.mundoanuncio.com' >Marianas del Norte</option>
  152. <option value='779424' ma_urlbase='www.mundoanuncio.com' >Zimbabwe</option>
  153.             </p><p>
  154.         <input type="hidden" id="sel_prov" name="sel_prov" value="0" />
  155.             <label for="id_prov">Provincia:</label>
  156.         <div id="prov_div"><select id="id_prov"></select></div>
  157.         </p>
  158.  
  159.         <p>
  160.             <label for="ciudad" class="optional" >Ciudad / Población (opcional):</label>
  161.             <input type="text" name="ciudad" id="ciudad" size="30" value="" />
  162.         </p>
  163.  
  164.         <p>
  165.             <label for="barrio" class="optional">Barrio (opcional):</label>
  166.             <input type="text" name="barrio" id="barrio" size="30" value="" />
  167.         </p>
  168.  
  169.  
  170.         <p class="descripcio">
  171.         <div class="tinymce">
  172.         <label style="display:block;" for="descripcio">Descripción:</label>
  173.         <textarea name="descripcio" id="descripcio" rows="15" cols="45"></textarea>
  174.         <script type="text/javascript">
  175.             tinyMCE.init({
  176.                 mode : "exact",
  177.                 elements : "descripcio",
  178.                 content_css : "/css/tinymce_content.css",
  179.                 theme : "advanced",
  180.                 width : "486",
  181.                 theme_advanced_buttons1 : "bold, italic, undo, redo, link, unlink",
  182.                 theme_advanced_buttons2 : "",
  183.                 theme_advanced_buttons3 : "",
  184.                 theme_advanced_toolbar_location : "top",
  185.                 theme_advanced_toolbar_align : "left"
  186.             });
  187.             </script>
  188.         </div>
  189.         </p>
  190.         <p><span class="label"></span><input type='radio' name='opcio_especial' id='opcio_especial0' value='7' checked='checked' /> <label for='opcio_especial0' class='radio'>Venta</label>
  191. <input type='radio' name='opcio_especial' id='opcio_especial1' value='8'  /> <label for='opcio_especial1' class='radio'>Compra</label>
  192. </p>
  193. <p>
  194.         <label for='mail' class='optional'>E-mail (opcional):</label>
  195.         <input size='30' type='text' name='mail' id='mail' value='' />
  196.         <input type='hidden' name='mail_visible' value='' />
  197. </p>
  198. <div id="img_div">  <input type="hidden" value="1" name="img_count" id="img_count" />  <input type="hidden" value="1" name="img_max_id" id="img_max_id" />  <div id="img_container">    <p id="img_p_tpl" style="display:none;">        <label for="image_tpl" class="optional" id="lbl_tpl">Foto: (opcional)</label>        <input type="file" name="image_tpl" id="image_tpl" onChange="new_img();" />        <input type="button" name="remove_tpl" id="remove_tpl" value="Eliminar" onClick="remove_img(this);" />        <br /><label for="desc_tpl" id="lbl_desc_tpl" style="display: none;">&nbsp;</label><input type="text" class="italicDesc" name="desc_tpl" id="desc_tpl" value="Descripci&oacute;n de la foto ..." onClick="cleanVal(this);" style="margin-left: 3px; display:none;" maxlength="60" size="30"/><input type="hidden" name="desc_tpl_edited" id="desc_tpl_edited" value="0" />    </p>    <p id="img_p_1" style="display:block;">        <label for="image_1" class="optional" id="lbl_1">Foto: (opcional)</label>        <input type="file" name="image_1" id="image_1" onChange="new_img();" />        <input type="button" name="remove_1" id="remove_1" value="Eliminar" onClick="remove_img(this);" style="margin-left: -3px;" />        <br /><label for="desc_1" id="lbl_desc_1" style="display: none;">&nbsp;</label><input type="text" class="italicDesc" name="desc_1" id="desc_1" value="Descripci&oacute;n de la foto ..." onClick="cleanVal(this);" style="margin-left: 3px; display:none;" maxlength="60" size="30"/><input type="hidden" name="desc_1_edited" id="desc_1_edited" value="0" />    </p>  </div><p class="notice">La imagen no puede ser mayor a 5 MB. El formato debe ser JPEG, GIF o PNG.</p></div>
  199.         <p>
  200.             <label for='preu' class='optional'>Precio (opcional):</label>
  201.             <input type='text' name='preu' id='preu' size='15' maxlength='32' />
  202.         </p>
  203.             <p class='buttons'>
  204.                 <input type='submit' value='Inserta anuncio' />
  205.                 </p>
  206. <script type="text/javascript">
  207. //<![CDATA[
  208. document.getElementById('titol').focus()
  209. //]]>
  210.     </form>
  #4 (permalink)  
Antiguo 02/10/2011, 13:30
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
Respuesta: 4yuda con CURL

Cita:
Iniciado por Ronruby Ver Mensaje
¿Haz verificado las cabeceras que son enviadas en el request?

Si estas dispuesto a dar una remuneración por la ayuda tal vez te convenga postearlo como una Oferta de Empleo en el foro correspondiente.
Digamos que aun no tengo un lñenguaje muy tecnico pero los datos si llegan
  #5 (permalink)  
Antiguo 02/10/2011, 13:40
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: 4yuda con CURL

La idea es replicar la mayor cantidad de datos posibles a hacer un request a otro sitio.

Para verificar las cabeceras que son enviadas en el request puedes usar la consola de Chrome o el plugin Firebug para Firefox.

Con Google Chrome, presiona Ctrl + Shift + I, ve a la pagina de insertar el anuncio, ahora en la consola elige la pestaña de Network y abajo hay un boton con un circulo que al poner el mouse encima dice: Preserve Log upon Navigation. Cliquealo. Ahora llena el formulario y dale a Enviar.
Cuando eso pase, ahi mismo en la pestaña Network busca el script PHP que es llamado y te muestra las cabeceras.
Cita:
Request URL:http://www.mundoanuncio.com/anunci_insert_run.php
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-419,es;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:2637
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryXkHh83r5MQjirOhA
Cookie:PHPSESSID=c45de83c239f5a499f46d3d1fa4cb421; user_signature_ad=db198047a6e2b046fb4b725280b50588 ; __utma=241835934.1237093064.1317582620.1317582620. 1317582620.1; __utmb=241835934.27.10.1317582620; __utmc=241835934; __utmz=241835934.1317582620.1.1.utmcsr=(direct)|ut mccn=(direct)|utmcmd=(none)
Host:www.mundoanuncio.com
Origin:http://www.mundoanuncio.com
Referer:http://www.mundoanuncio.com/publicar...libros_53.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.187 Safari/535.1
Request Payload
------WebKitFormBoundaryXkHh83r5MQjirOhA
Content-Disposition: form-data; name="categoria"

53
------WebKitFormBoundaryXkHh83r5MQjirOhA
Content-Disposition: form-data; name="titol"

Busco Libro Head First AJAX
------WebKitFormBoundaryXkHh83r5MQjirOhA
Content-Disposition: form-data; name="id_pais"
Es un ejemplo y faltan muchos datos
  #6 (permalink)  
Antiguo 02/10/2011, 13:45
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
Respuesta: 4yuda con CURL

Ok gracias deja instalo y le sigo.
  #7 (permalink)  
Antiguo 05/11/2011, 17:59
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: 4yuda con CURL

Hola, estamos trabajando para mejorar la seguridad en nuestra web.
Si publicas anuncios repetidos serán eliminados dejando solo uno activo. Si existiera una publicación masiva todos los anuncios serán eliminados y además bloquearemos al usuario para que no vuelva a insertar anuncios en el sitio.
  #8 (permalink)  
Antiguo 06/11/2011, 12:38
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
Respuesta: 4yuda con CURL

Cita:
Iniciado por mundoanuncio Ver Mensaje
Hola, estamos trabajando para mejorar la seguridad en nuestra web.
Si publicas anuncios repetidos serán eliminados dejando solo uno activo. Si existiera una publicación masiva todos los anuncios serán eliminados y además bloquearemos al usuario para que no vuelva a insertar anuncios en el sitio.
No pedi tu opinion.

Etiquetas: curl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:57.