Captcha en Pordede

Captcha en Pordede
Mensaje por tormund » 24 Mar 2017, 19:26
Re: Captcha en Pordede
Mensaje por Cmos » 24 Mar 2017, 20:07
Hace un tiempo, para otra web que pedía el captcha al mostrar los enlaces, estuve probando con ello y después de varios intentos cuando estaba cerca de conseguirlo lo que pasó es que ya el captcha no pedía la comprobación de "No soy un robot", sino que también pedía lo típico de señalar las imágenes... En teoría sería posible emularlo e incluso mostrar una ventana con las imágenes cuando las pida (aunque esto solo serviría para Kodi probablemente), pero es un jardín de los grandes donde yo ni me asomaría

Publicidad
Re: Captcha en Pordede
Mensaje por tormund » 24 Mar 2017, 23:10
Tengo varias dudas del proceso:
- He llegado a llamar a la primera URL pero me devuelve el JSON con todo a null. Creo que me falta el Referer pero el que envía el navegador tiene un parámetro que no sé de donde lo obtiene: v=r20170320152239. Imagino que será un parámetro que debo capturar pero no sé de dónde.
- Si no pide captcha, ¿qué debería enviar a Pordede para que valide el login?¿Capturando la cookie de que envíe Google?
- Si pide captcha, ¿cómo podría capturar la respuesta del usuario al pulsar sobre la image?
Como me has dicho que estuviste probando un bypass para el captcha quizá me puedas orientar para, al menos, intentar conseguir algo.
Saludos.
Re: Captcha en Pordede
Mensaje por Cmos » 25 Mar 2017, 01:40
 Resulta que el método que se usa para resolver el captcha sin imágenes en el navegador es muy difícil de replicar en código, ya que en uno de los pasos se necesita un valor llamado bgdata que se saca resolviendo un código en javascript que no hay manera de meterle mano (yo ni siquiera sé donde está, y seguramente quien lo haya hecho se ha montado una web premium anti captcha xD)
  Resulta que el método que se usa para resolver el captcha sin imágenes en el navegador es muy difícil de replicar en código, ya que en uno de los pasos se necesita un valor llamado bgdata que se saca resolviendo un código en javascript que no hay manera de meterle mano (yo ni siquiera sé donde está, y seguramente quien lo haya hecho se ha montado una web premium anti captcha xD)Por lo tanto la única manera es resolviendo el captcha de imágenes. El problema es que hay que montar un sistema de botones donde el usuario pinche sobre el trozo/trozos de imagen correcta, y puede ser que haya que hacerlo varias veces hasta que el recaptcha se quede tranquilo xD
Bien, este es el código en sucio que tenía, ligeramente modificado para adaptarlo a pordede. A este código le faltan varias partes, porque no llegué tan lejos, pero como verás no es tan sencillo como encadenar dos o tres llamadas a diferentes urls, ojalá
 
 Código: Seleccionar todo
    import base64, time
    from core import httptools
    url_login = "http://www.pordede.com/site/login"
    data = httptools.downloadpage(url_origin).data
    
    api_js = httptools.downloadpage("http://www.google.com/recaptcha/api.js?hl=es").data
    a = scrapertools.find_single_match(api_js, 'po.src = \'(.*?)\';')
    version = a.split("/")[5]
    key = scrapertools.find_single_match(data, 'data-sitekey="([^"]+)"')
    co = base64.b64encode('http://www.pordede.com:80').replace("=", ".")
    headers= {"User-Agent": "Mozilla/5.0",
             "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
             "Referer": "https://www.google.com/recaptcha/api2/demo/",
             "Accept-Language": 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3'}
    params = "k=%s&hl=es&v=%s&co=%s&cb=418nrq4cd5m&size=normal" % (key, version, co)
    url = "https://www.google.com/recaptcha/api2/anchor?%s" % params
    data = httptools.downloadpage(url, headers=headers, replace_headers=True).data
    
    token = scrapertools.find_single_match(data, 'id="recaptcha-token" value="([^"]+)">')
    params = "k=%s&hl=es&v=%s&bg=!A&c=%s" % (key, version, token)
    headers["Referer"] = url
    data = httptools.downloadpage("https://www.google.com/recaptcha/api2/frame?%s" % params, headers=headers, replace_headers=True).data
    data = data.decode("unicode-escape")
    token = scrapertools.find_single_match(data, '"rresp","([^"]+)"')
    params2 = "k=%s&c=%s" % (key, token)
    url_imagen = "https://www.google.com/recaptcha/api2/payload?%s" % params2
    # Esta es la url de la imagen (puede haber varias)
    # Desde aqui encapsular con un while
    # captcha_response = resolver_captcha()
    # Ejemplo de respuesta: [[5,9]] -  Recuadro 5 y 9
    # response = base64.b64encode('{"response":"%s" % captcha_response}')
    url = "https://www.google.com/recaptcha/api2/userverify?k=%s" % key
    time1 = int(round(time.time() * 1000)) - int(round(time.time() * 1000))
    post = "v=%s&c=%s&response=%s&t=%s&ct=%s&bg=!A" % (version, token, response, time1, time1)
    headers["Referer"] = "https://www.google.com/recaptcha/api2/frame?k=%s&hl=es&v=%s" % (key, version)
    data = httptools.downloadpage(url, post, headers=headers, replace_headers=True).data
    # Si en este data se devuelve un string bgdata, hay que volver a sacar una nueva imagen
    result = scrapertools.find_single_match(data, '"uvresp","([^"]+)"')
    post = "LoginForm[username]="+config.get_setting("pordedeuser", "pordede")+"&LoginForm[password]="+config.get_setting("pordedepassword", "pordede")
    post += "&LoginForm[verifyCode]=%s&g-recaptcha-response=%s" % (result, result)
    data = httptools.downloadpage(url_login, post, add_referer=True)Por mi parte yo intentaré mirarlo cuando tenga tiempo pero no sé si la cosa saldrá bien...
Re: Captcha en Pordede
Mensaje por Cmos » 25 Mar 2017, 14:35
 Resulta que el método es más sencillo es cargar el captcha con un user-agent del pleistoceno, para que así el código que se recibe sea mucho más directo y sencillo de parsear y la solución también mucho más fácil. De esto me di cuenta al probar la web cargándola en el chrome con el user-agent cambiado, se me iluminó la bombilla y el resto ha sido "coser y cantar" (o eso me gustaría decir xDD)
  Resulta que el método es más sencillo es cargar el captcha con un user-agent del pleistoceno, para que así el código que se recibe sea mucho más directo y sencillo de parsear y la solución también mucho más fácil. De esto me di cuenta al probar la web cargándola en el chrome con el user-agent cambiado, se me iluminó la bombilla y el resto ha sido "coser y cantar" (o eso me gustaría decir xDD)He colgado los archivos en el subforo de pelisalacarta, por si quieres echarles un ojo y te sirven para portarlo a java que es donde imagino quieres usarlo

- Ayuda sobre plugins
- ↳ tvalacarta
- ↳ Problemas (no me funciona...)
- ↳ Preguntas (cómo se hace...)
- ↳ Sugerencias (estaría bien que hubiera...)
- ↳ pelisalacarta
- ↳ Problemas (no me funciona...)
- ↳ Preguntas (cómo se hace...)
- ↳ Sugerencias (estaría bien que hubiera...)
- ↳ pelisalacarta (For Italian users)
- ↳ Problemi (Non mi funziona...)
- ↳ Domande (Come fare a...)
- ↳ Suggerimenti (Sarebbe bello che...)
- ↳ mywebtv
- ↳ Problemas (no me funciona...)
- ↳ Preguntas (cómo se hace...)
- ↳ Sugerencias (estaría bien que hubiera...)
- ↳ MediaExplorer
- ↳ Balandro
- ↳ Otros plugins
- ↳ Alfa
- ↳ Alfa (For Italian users)
- ↳ Tutoriales
- Ayuda sobre mediacenters
- ↳ XBMC / Kodi
- ↳ Plex
- ↳ Android
- ↳ Raspberry Pi
- ↳ Boxee
- ↳ WiiMC
- ↳ Enigma 2
- ↳ Otros media center
- Sugerencias
- ↳ Nuevos canales
- ↳ Mejoras
- Desarrolladores
- Comunidad
¿Qué es Mi media center?
Este es el foro oficial de soporte para pelisalacarta, tvalacarta y mywebtv.
                También es un lugar para compartir tus experiencias con dispositivos multimedia y software media center, puede que encuentres algo interesante que ni siquiera sabías que se podía hacer.
Primeros pasos en Kodi

Si estás empezando con Kodi, o si estás interesado en sacarle más partido, puedes echar un vistazo a esta colección de video-tutoriales.
Aprenderás a crear y optimizar tu biblioteca, a instalar add-ons, a buscar subtítulos...
Cómo reportar un problema
Si tienes un problema en alguno de los plugins y quieres reportarlo, no olvides incluir el log.
Para que resulte útil tienes que activar la opción de "log completo" en el plugin, luego reiniciar Kodi y dar los pasos necesarios hasta que se produzca el problema.

Luego copia tu fichero de log, siguiendo las instrucciones que se describen en este enlace, e inclúyelo al final de la descripción de tu problema.
Aprende a programar para Kodi
Si sabes programar, esta serie de tutoriales que describen paso a paso cómo desarrollar tu propio add-on para Kodi.
Y si quieres añadir tus propios canales a pelisalacarta también te contamos paso a paso cómo hacerlo en este enlace.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados