[SOLUCIONADO] Checkear emails validos

  • 22 Respuestas
  • 1714 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Este post tiene marcado una respuesta como solución Presiona acá para verlo

Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

[SOLUCIONADO] Checkear emails validos

  • en: Diciembre 09, 2019, 04:26:01 pm
"Buenos dias, queria saber si hay alguna forma de checkear en gmx.com los emails validos, con esto quiero decir, que tengo una cuenta gmx en el cual me falta 3 caracteres por rellenar, y queria crear un script para que checkea estas 3 posibles combinacions desde la 0-9 a-z, si alguien me puede pasar una guia o el script hecho lo apreciaria. Gracias"

Bueno basicamente he creado 2 archivos uno json y otro python, he generado un diccionario con crunch de 3 caracteres cada uno, el Request URL: https://onereg-email-suggest.gmx.com/email-alias/availability es este en cual se puede ver que emails estan validos y cuales no.
AHora lo que me queda es el codigo.

« Última modificación: Diciembre 15, 2019, 04:48:47 pm por DtxdF »

Desconectado HATI

  • *
  • Moderador Global
  • Mensajes: 449
  • Actividad:
    23.33%
  • Reputación 13
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 11, 2019, 01:17:41 pm
El enlace que pones es incorrecto.


Jugar o perder

Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 11, 2019, 03:13:58 pm
El enlace es una url para checkear los emails. El emagil para registrarse es este https://signup.gmx.com/#.1559516-header-signup2-1

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 11, 2019, 03:25:21 pm
Para solo permitir letras y números puedes fijarte que matchee con la expresion regular:

/[A-Za-z0-9]+/

Por otro lado creo que puedes darle la especificación de solo letras y números a crunch en lugar de crear todo y después filtrarlo.

Saludos,




Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 11, 2019, 04:48:41 pm
Creo que ya entendí, tu quieres mandarle los valores automáticamente y que te diga si están disponibles..
Este es el método post que envía en mi caso:

Código: [Seleccionar]
POST /email-alias/availability HTTP/1.1
Host: onereg-email-suggest.gmx.com:443
Accept: application/json, text/plain, */*
Authorization: Bearer qXeyJhbGciOiJIUzI1NiJ9.eyJjdCI6ImJ2aUZsOElzbVdRVGowQ1RXWHRhRjZTRkxDb1NTYlp1S1hLY0hzYmcwQ0JJekFTSkRZazNkYXhKM3ZNcVJLMEdVUzhrVnRKSHJtMlpJNHlHc1diMXZ1Q1ZCd1J5SHU0MU9FV2lxV0lFUkRvUkJ0QXlYLV9hLWtKWXZ6TkJqdUZBN196WmNrNlRsaEY4LXFZZmU3eFJHVjlMQ25RbzZXN3h3T2lNZDZQdEJ4VSIsInNjb3BlIjoicmVnaXN0cmF0aW9uIiwia2lkIjoiMjJhNTc4YTMiLCJleHAiOjE1NzYwOTkxNDYyOTIsIml2IjoiU1NlYWpVNHNGTG1FdkdjalVwUVJVQSIsImlhdCI6MTU3NjA5MTk0NjI5MiwidmVyc2lvbiI6Mn0.IJhoJVmV3fae8sI7ZCkeEGoomMnBQzdNlbuCVgRqxf0
Content-Type: application/json
Origin: https://signup.gmx.com
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36
X-CCGUID: dbf115df-3393-4f60-97d1-6df5cfd3d57d
X-REQUEST-ID: be594052-5f5d-4474-a753-4ac822a5a1e4
X-UI-APP: @umreg/registration-app2/5.9.1

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://signup.gmx.com
Cache-Control: no-cache, proxy-revalidate
Connection: close
Content-Length: 127
Content-MD5: THSL4VpC/AITAoELgz1OmQ==
Content-Type: application/json;charset=utf-8
Date: Wed, 11 Dec 2019 19:23:35 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains
Vary: Origin
X-Content-Type-Options: nosniff
X-REQUEST-ID: be594052-5f5d-4474-a753-4ac822a5a1e4
X-UI-PROVIDED-IDENTITY: [email protected]
X-UI-VERSION: 2.5.25/2.5.25

No se si use alguna variable de session, por las dudas si queires ver tus métodos POST más fácil que en network del developer tools, instala el HTTP Live headers.

Bueno quedaría que envíes un método post similar desde tu aplicación

Ya que tu creaste el JSON y estas con python chequea esto:

Código: Python
  1. import json
  2. import urllib2
  3.  
  4. data = {
  5.         'ids': [12, 3, 4, 5, 6]
  6. }
  7.  
  8. req = urllib2.Request('http://example.com/api/posts/create')
  9. req.add_header('Content-Type', 'application/json')
  10.  
  11. response = urllib2.urlopen(req, json.dumps(data))
  12.  

https://stackoverflow.com/questions/9746303/how-do-i-send-a-post-request-as-a-json

Saludos,



Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 01:18:17 am
Gracias, funciono lo de la expresion para atom.

Mi idea es enviar un post al servicio de gmx.com para ver que emails son validos y que otros no.
Sobre el HTTP Live headers, no consigo encontrar uno decente en chrome,  pero igualmente esto es lo que puedo ver en network de chrome:
Código: [Seleccionar]
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Authorization: Bearer qXeyJhbGciOiJIUzI1NiJ9.eyJjdCI6InNMemJwVktCMEVpdUIyamNsSW1LUl9iYUVFRVZOeUUyM0NweHlzNU9aTjl2NUw2blcxUUFsZS01M1Z6bFhPNUx5YklxbkVMWndmMGhxLWRWbi1ZemVvbFd2SlpDTVRFa1dQbDE3dHg0dC1Ea1VXX1Yzd1EtTkNXTXRjUXczQ1F0TUtibFRBYjl4aXFuYWt6WTV6VWp4OUtoRWxlb0tZMW1ZQTBobmdGaF8tbyIsInNjb3BlIjoicmVnaXN0cmF0aW9uIiwia2lkIjoiMjJhNTc4YTMiLCJleHAiOjE1NzYxMjg2MDc0MTksIml2IjoiRS15bl9DZFpKTDBVcG9ZVm1oUlNOZyIsImlhdCI6MTU3NjEyMTQwNzQxOSwidmVyc2lvbiI6Mn0.QMATETHZ3Rcf4HyfyNBhYAsv6xvZBT7SmPWWPbPyIXc
Connection: keep-alive
Content-Length: 186
Content-Type: application/json
DNT: 1
Host: onereg-email-suggest.gmx.com
Origin: https://signup.gmx.com
Referer: https://signup.gmx.com/
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
X-CCGUID: b7d8e3e1-7c55-48f6-8717-1d7f112662b5
X-REQUEST-ID: 5b148aef-0ede-4ee7-bae2-199eb876f779
X-UI-APP: @umreg/registration-app2/5.9.1

Sobre el codigo de Python es de hace 7 años así que esta un poco desactualizado igualmente, he cambiado un poco el mio pero como mi conocimiento es limitado me da error

Código: Python
  1. import json
  2. from urllib2 import urlopen
  3.  
  4.  
  5.  
  6. arg = open('email.json', 'r')
  7. request = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  8.  
  9. for line in arg:
  10.     email = line.strip()
  11.     http = request.post( data={'nld' + password + 'gmx.com'})
  12.     content = http.content
  13.     if "This choice of email address has already been assigned" in content:
  14.             print ("Not available")
  15.             break
  16.     else:
  17.          print("Available")
  18.  


y el error que me da es este : http = request.post( data={'nld' + password + 'gmx.com'})
AttributeError: 'str' object has no attribute 'post'
« Última modificación: Diciembre 12, 2019, 01:25:49 am por xne7esx »

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 01:25:58 am
Ese error es por que tu no importas request, y declaras un string con nombre request, y luego llamas al método post de request, y request no es tu objeto request es un string.

Al igual que esa concatenación de password que haces y nunca declaraste password como nada..
Creo que ahí querías concatenera 'email' y de todas formas falta el @

Me voy a descansar.

https://requests.readthedocs.io/en/master/user/quickstart/

Saludos,
« Última modificación: Diciembre 12, 2019, 09:02:50 am por Solid Water »



Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 01:48:00 am
A gracias y buenas noches.

Ya he arreglado el codigo demas, gracias x avisarme, aun así sigo entender mucho lo del codigo de python.

He intentado arreglar la parte request, pero ha sido un fracaso absoluto, voy a checkear el link que me  has dejado.
Código: Python
  1. import json
  2. from urllib2 import urlopen
  3. import string
  4. import request
  5.  
  6. arg = open('email.json', 'r')
  7. request = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  8. url = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  9.  
  10. for line in arg:
  11.     email = line.strip()
  12.     http = request(url, data={'nld' + email + '@gmx.com'})
  13.     content = http.content
  14.     if "This choice of email address has already been assigned" in content:
  15.             print ("Not available")
  16.             break
  17.     else:
  18.          print("Available")
  19.  

He mirado un poco en los foros, y he visto que algunos importa string y request, he visto un poco otros codigos pero no encuentro ningun ejemplo sobre este tipo de metodo POST y GET, y sigo sin entender lo de string.
Voy a indagar un poco a si que muchas gracias por todo.

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 02:28:04 am
Es requests con s te lo dije mal, si mira el link.

Fijate si no tenes que instalar algo.

Saludos,
« Última modificación: Diciembre 12, 2019, 09:02:06 am por Solid Water »



Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 526
  • Actividad:
    100%
  • Reputación 11
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 02:14:48 pm
@xne7esx

Es requests con s te lo dije mal, si mira el link.

Fijate si no tenes que instalar algo.

Saludos,

Exacto, lo que se refiere "Solid Water", es la librería "requests", que puede instalar de la siguiente forma:

Python 2:

Código: Bash
  1. python -m pip install requests

Python 3:

Código: Bash
  1. python3 -m pip install requests

¿Cómo se usa?

De la siguiente forma:

Código: Python
  1. # -*- coding: UTF-8 -*-
  2. # Notas:
  3. #  Elimine, muchas cosas; cómo la librería json, no está usandola, igualmente que otras librerias.
  4. #  Sí va quiere descodificar
  5. #  Coloque la codificación UTF-8 en la primera linea, si es que va a ejecutar el script en Python 2
  6.  
  7. import requests # La libreria 3:-)
  8.  
  9. arg = open('email.json', 'r')
  10. url = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  11.  
  12. for line in arg:
  13.    
  14.     email = line.strip()
  15.     http = requests.get( url, data={'nld{}@gmx.com'.format(email)} ) # Sí va a enviar una petición por el metodo "GET",
  16.                                                                      # pero en caso de qué no, sólo cambie "get" por "post".
  17.                                                                      # Ejemplo:
  18.                                                                      #   >>> requests.post(...)
  19.     content = http.text # Lo cambio a text para evitar una incompatibilidad con Python ( 3 )
  20.  
  21.     if "This choice of email address has already been assigned" in content:
  22.             print("Not available")
  23.             break
  24.     else:
  25.          print("Available")
  26.  

Pude notar, que sea cual sea el método que se utilice, siempre va a dar el código de estado "403".

~ DtxdF
« Última modificación: Diciembre 12, 2019, 02:16:38 pm por DtxdF »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 10:29:59 pm
Código: Python
  1. python fing.py
  2. Traceback (most recent call last):
  3.   File "fing.py", line 15, in <module>
  4.     http = requests.get( url, data={'nld{}@gmx.com'.format(email)} ).enconde("UTF-8") # Sí va a enviar una petición por el metodo "GET",
  5.   File "/home/n/.local/lib/python2.7/site-packages/requests/api.py", line 75, in get
  6.     return request('get', url, params=params, **kwargs)
  7.   File "/home/n/.local/lib/python2.7/site-packages/requests/api.py", line 60, in request
  8.     return session.request(method=method, url=url, **kwargs)
  9.   File "/home/n/.local/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
  10.     resp = self.send(prep, **send_kwargs)
  11.   File "/home/n/.local/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
  12.     r = adapter.send(request, **kwargs)
  13.   File "/home/n/.local/lib/python2.7/site-packages/requests/adapters.py", line 449, in send
  14.     timeout=timeout
  15.   File "/home/n/.local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen
  16.     chunked=chunked,
  17.   File "/home/n/.local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 387, in _make_request
  18.     conn.request(method, url, **httplib_request_kw)
  19.   File "/usr/lib/python2.7/httplib.py", line 1058, in request
  20.     self._send_request(method, url, body, headers)
  21.   File "/usr/lib/python2.7/httplib.py", line 1098, in _send_request
  22.     self.endheaders(body)
  23.   File "/usr/lib/python2.7/httplib.py", line 1054, in endheaders
  24.     self._send_output(message_body)
  25.   File "/usr/lib/python2.7/httplib.py", line 896, in _send_output
  26.     self.send(message_body)
  27.   File "/usr/lib/python2.7/httplib.py", line 868, in send
  28.     self.sock.sendall(data)
  29.   File "/usr/lib/python2.7/ssl.py", line 759, in sendall
  30.     v = self.send(data[count:])
  31. TypeError: 'set' object has no attribute '__getitem__'
  32.  

He puesto el codigo que me has pasado y me sale este error, no se de que es, puede que me falte un paquete o algo, de todas formas voy a buscar.
Instale hace tiempo lo de pip requests solo que me equivoque al no ponerle la s al final, de todas formas lo volví a instalar x si acaso, ahora mismo estos usando python 2.7.15+.

Citar
Pude notar, que sea cual sea el método que se utilice, siempre va a dar el código de estado "403".

~ DtxdF
Te refieres que la pagina web no permite que los protocolos get y post puedan hacerse? o el script no sirve para estas situaciones?.

Igualmente gracias por el tiempo que habeis dedicado, "DtxdF" y "Solid Water"

El codigo que he usado es este:
Código: Python
  1. # -*- coding: UTF-8 -*-
  2. # Notas:
  3. #  Elimine, muchas cosas; cómo la librería json, no está usandola, igualmente que otras librerias.
  4. #  Sí va quiere descodificar
  5. #  Coloque la codificación UTF-8 en la primera linea, si es que va a ejecutar el script en Python 2
  6.  
  7. import requests # La libreria 3:-)
  8.  
  9. arg = open('email.json', 'r')
  10. url = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  11.  
  12. for line in arg:
  13.  
  14.     email = line.strip()
  15.     http = requests.get( url, data={'nld{}@gmx.com'.format(email)} ).enconde("UTF-8") # Sí va a enviar una petición por el metodo "GET",
  16.                                                                      # pero en caso de qué no, sólo cambie "get" por "post".
  17.                                                                      # Ejemplo:
  18.                                                                      #   >>> requests.post(...)
  19.     content = http.content # Lo cambio a text para evitar una incompatibilidad con Python ( 3 )
  20.  
  21.     if "This choice of email address has already been assigned" in content:
  22.             print("Not available")
  23.             break
  24.     else:
  25.          print("Available")
« Última modificación: Diciembre 12, 2019, 10:35:51 pm por xne7esx »

Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 10:41:46 pm
No me gusta dejarlo todo poco claro a si que he intetnado con Python3 -V 3.6.9 y con el codigo que me has dado me sale otro tipo de error.

Citar
~/Python$ python3 -m pip install requests
/usr/bin/python3: No module named pip


Y al intentar ejecutar el codigo me sale este error.

Citar
python3 fing.py
Traceback (most recent call last):
  File "/usr/lib/python3.6/http/client.py", line 996, in send
    self.sock.sendall(data)
  File "/usr/lib/python3.6/ssl.py", line 972, in sendall
    with memoryview(data) as view, view.cast("B") as byte_view:
TypeError: memoryview: a bytes-like object is required, not 'str'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "fing.py", line 15, in <module>
    http = requests.get( url, data={'nld{}@gMx.com'.format(email)} ) # Sí va a enviar una petición por el metodo "GET",
  File "/usr/lib/python3/dist-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 520, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 630, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 440, in send
    timeout=timeout
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 357, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.6/http/client.py", line 1254, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1300, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1249, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1075, in _send_output
    self.send(chunk)
  File "/usr/lib/python3.6/http/client.py", line 1000, in send
    self.sock.sendall(d)
  File "/usr/lib/python3.6/ssl.py", line 972, in sendall
    with memoryview(data) as view, view.cast("B") as byte_view:
TypeError: memoryview: a bytes-like object is required, not 'str'


Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 526
  • Actividad:
    100%
  • Reputación 11
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.

Re:Checkear emails validos

  • en: Diciembre 12, 2019, 11:50:18 pm
@xne7esx

Ok. Disculpe, me falto una cosa.

Vamos por partes.

Primero me falto incluir el método ".encode( )" en el envío de los datos. Aquí está el código modificado:

Código: Python
  1. # Notas:
  2. #  Elimine, muchas cosas; cómo la librería json, no está usandola, igualmente que otras librerias.
  3.  
  4. import requests # La libreria 3:-)
  5.  
  6. arg = open("email.json", "r")
  7. url = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  8.  
  9. for line in arg:
  10.    
  11.     email = line.strip()
  12.     http = requests.get( url, data={('nld{}@gmx.com'.format(email)).encode()}) # Sí va a enviar una petición por el metodo "GET",
  13.                                                                                # pero en caso de qué no, sólo cambie "get" por "post".
  14.                                                                                # Ejemplo:
  15.                                                                                #   >>> requests.post(...)
  16.     content = http.text
  17.  
  18.     if "This choice of email address has already been assigned" in content:
  19.             print("Not available")
  20.             break
  21.     else:
  22.          print("Available")
  23.  
  24.  

La salida sería:

Código: Bash
  1. python3 test.py
  2. Available

PD: Ahora sólo funciona para Python 3, Python 2 me está generando un error con el paquete «pyssl»

Segundo, ésta es la forma en que se instala "Pip":

Espero esté usando un sistema operativo *nix, porque lo haré desde uno:

Código: Bash
  1. sudo apt-get install python3-pip

Eso instalaría "Pip" para Python 3 usando "apt-get" (El gestor de paquetes).

También puede optar por hacerlo con el mismo Python, pero esta vez descargaremos una utilidad llamada "get-pip". Puede encontrarla, así como su forma de instalación en: github.com/pypa/get-pip

Actualizado:

OJO: Quiero aclarar (cómo desde un principio), que el código de estado es "403" (No tiene permiso para ingresar a este recurso) y el contenido del cuerpo está vacio. Por lo tanto siempre le dira "Available" ¿Por qué?, porque en el mensaje que usted coloca «This choice of email address has already been assigned» contiene espacios y al compararlo con una cadena vacia, siempre le dará «False». Creo que esa API (Sí es que es una), no está en función; es mejor que usé expresiones regulares siguiendo el estándar para las direcciones de correos electrónicos.

~ DtxdF
« Última modificación: Diciembre 13, 2019, 12:09:18 am por DtxdF »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 06:45:34 am
Vale, perfecto, he probad el codigo y funciona bien, al menos he entendido unas cuantas cosas sobre python, entonces la API de gmx.com para comprobar los emails no esta abierta? https://signup.gmx.com/#.1559516-header-signup2-1

Citar
es mejor que usé expresiones regulares siguiendo el estándar para las direcciones de correos electrónicos.

A que te refieres aqui? cambiar el codigo para poder introducir los datos de otra forma? y como se podria hacer eso?

Marcado como mejor respuesta por: xne7esx en Diciembre 14, 2019, 03:41:58 am

Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 526
  • Actividad:
    100%
  • Reputación 11
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 08:26:26 am
@xne7esk

Bueno, no he visto si es o no una API, sí me dice donde se entero de su existencia, mejor, ya que mayormente esas APIs tienen documentación.

Respecto al código, funciona perfecto, a lo que me refiero que no está del todo bien, es la respuesta que le dá el servidor. Ejecute este código, verá que ahora se muestra tal cual la respuesta y el código de estado:

Código: Python
  1. # Notas:
  2. #  Elimine, muchas cosas; cómo la librería json, no está usandola, igualmente que otras librerias.
  3.  
  4. import requests # La libreria 3:-)
  5.  
  6. arg = open("email.json", "r")
  7. url = 'https://onereg-email-suggest.gmx.com/email-alias/availability'
  8.  
  9. for line in arg:
  10.    
  11.     email = line.strip()
  12.     http = requests.get( url, data={('nld{}@gmx.com'.format(email)).encode()}) # Sí va a enviar una petición por el metodo "GET",
  13.                                                                                # pero en caso de qué no, sólo cambie "get" por "post".
  14.                                                                                # Ejemplo:
  15.                                                                                #   >>> requests.post(...)
  16.     content = http.text
  17.  
  18.     print("Respuesta: {}".format(repr(content)))
  19.     print("Código de Estado: {}".format(http.status_code))
  20.  
  21.     if "This choice of email address has already been assigned" in content:
  22.             print("Not available")
  23.             break
  24.     else:
  25.          print("Available")
  26.  

Citar
A que te refieres aqui? cambiar el codigo para poder introducir los datos de otra forma? y como se podria hacer eso?

Me refiero a que siga el estándar o las reglas para describir un correo electrónico válido. Cómo pueden ser:

  • La parte local no puede exceder los 64 caracteres.
  • La parte del dominio no puede ser más de 255 caracteres.
  • Caracteres cómo: letras acentuadas, caracteres de control (CTRL + tecla del teclado), los signos especiales como ()<>@,;:"[]ç%& y los espacios

A lo que me refiero con la parte local es antes del arroba (@) y la parte del dominio después de éste; sumando todo, le dá una longitud de 319 + el arroba 320.

Puede ver mucha más información en los "RFC".

PD: Algunos servicios no siguen del todo estos estandares.

Siguiendo todo lo dicho anteriormente, puede verificarlo con expresiones regulares; en python se utiliza la librería "re".

Ejemplo:

Código: Python
  1. import re
  2. import sys
  3.  
  4. regex = "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
  5. argv = sys.argv[1:]
  6.  
  7. if (len(argv) >= 1):
  8.  
  9.     if (re.match(regex, argv[0])):
  10.  
  11.         print("¡Válido!")
  12.         sys.exit(0)
  13.  
  14.     else:
  15.        
  16.         print("Inválido ...")
  17.         sys.exit(1)
  18.  
  19. else:
  20.  
  21.     print("Sintaxis: {} <Email a verificar>".format(sys.argv[0]))
  22.     sys.exit(1)

El pedazo de código usaria expresiones regulares para verificar una dirección de correo electrónico siguiendo los estandares, pero cómo le dije antes, hay veces en que los servicios se salen un poco de lo correcto; cómo gmx que exigé 3 caracteres minimos para parte local.

Así es cómo sería el código para verificar lo que usted desea:

Código: Python
  1. import re
  2. import sys
  3.  
  4. regex = "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
  5. argv = sys.argv[1:]
  6.  
  7. if (len(argv) >= 1):
  8.  
  9.     if (re.match(regex, argv[0])):
  10.  
  11.         if (len(argv[0].split("@")[0]) >= 3):
  12.  
  13.             print("¡Válido!")
  14.             sys.exit(0)
  15.  
  16.         else:
  17.  
  18.             print("No es válido para GMX ...")
  19.  
  20.     else:
  21.        
  22.         print("Inválido ...")
  23.         sys.exit(1)
  24.  
  25. else:
  26.  
  27.     print("Sintaxis: {} <Email a verificar>".format(sys.argv[0]))
  28.     sys.exit(1)
  29.  

Espero le sirva  ;) ...

~ DtxdF
« Última modificación: Diciembre 13, 2019, 08:51:00 am por DtxdF »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 10:07:11 am
Pues si que ha sido de gran ayuda DtxdF.
No estoy en linux por lo que no puedo probarlo aunque me gustaría.
Solo agregar que prueben el método POST, ya que la web probablemente este en php y este toma el post y el get con distintas variables, no así como perl, que con las bibliotecas comunes le es indistinto.

Saludos,
« Última modificación: Diciembre 13, 2019, 10:30:16 am por Solid Water »



Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 526
  • Actividad:
    100%
  • Reputación 11
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 11:33:04 am
CaraCOLES, me falto mencionar a los métodos.

Lo probé siguiendo los dos métodos, dá el mismo resultado "403" cómo estado y el cuerpo vacio :/

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 135
  • Actividad:
    33.33%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 12:35:37 pm
Al parecer es por el Access-Control-Allow-Origin: https://signup.gmx.com

me está tirando 401 desde C#.



Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 526
  • Actividad:
    100%
  • Reputación 11
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 12:41:04 pm
Solid Water, ¿Le está pidiendo credenciales?, traté de hacerlo desde el navegador con los mismos valores en los encabezados que usó en C#, porque 401 es que requiere autenticación.

PD: Sí puede, deje el código

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado NLD

  • *
  • Underc0der
  • Mensajes: 27
  • País: 00
  • Actividad:
    93.33%
  • Reputación -1
    • Ver Perfil

Re:Checkear emails validos

  • en: Diciembre 13, 2019, 06:53:26 pm
@DtxdF.
He probado el 1º codigo y cierto me sale error 401.

Citar
Me refiero a que siga el estándar o las reglas para describir un correo electrónico válido. Cómo pueden ser:

La parte local no puede exceder los 64 caracteres.
La parte del dominio no puede ser más de 255 caracteres.
Caracteres cómo: letras acentuadas, caracteres de control (CTRL + tecla del teclado), los signos especiales como ()<>@,;:"[]ç%& y los espacios

A lo que me refiero con la parte local es antes del arroba (@) y la parte del dominio después de éste; sumando todo, le dá una longitud de 319 + el arroba 320.

Puede ver mucha más información en los "RFC".

Ahora entiendo, entonces esto ocurre ya que el codigo no sigue las reglas estandars del servicio, voy a buscar que es RFC,

He probado los otros dos codigos y me imprime: Sintaxis: {} <Email a verificar>
He pensado en agregar parte del codigo original a este y no se muy bien como hacerlo, igualmente voy a intentarlo despues de buscar detalladamente que es RFC, muchas gracias a los dos de todas formas, habeís sido de gran ayuda mas que en cualquier otro foro.

 

[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 24357
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 9866
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 11292
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 14214
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 13380
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon