dispositivos Tradicionalmente móviles se han detectado mediante la comparación de la cabecera HTTP User-Agent con una lista de pozo cadenas de UA móviles conocidas. En cambio, un enfoque novedoso intenta detectar la presencia de un sistema operativo de escritorio; cualquier elemento que no sea un SO de escritorio debe ser móvil.
Esto da como resultado menos falsos positivos.
He escrito un post con código de ejemplo en Python aquí: http://notnotmobile.appspot.com
Aquí hay un fragmento:
import re
# Some mobile browsers which look like desktop browsers.
RE_MOBILE = {
"iphone" : re.compile("ip(hone|od)", re.I),
"winmo" : re.compile("windows\s+ce", re.I)}
RE_DESKTOP = {
"linux" : re.compile(r"linux", re.I),
"windows" : re.compile(r"windows", re.I),
"mac" : re.compile(r"os\s+(X|9)", re.I),
"solaris" : re.compile(r"solaris", re.I),
"bsd" : re.compile(r"bsd", re.I)}
# Bots that don't contain desktop OSs.
RE_BOT = re.compile(r"(spider|crawl|slurp|bot)")
def is_desktop(user_agent):
# Anything that looks like a phone isn't a desktop.
for regex in RE_PHONE.values():
if regex.search(user_agent) is not None:
return False
# Anything that looks like a desktop probably is.
for regex in RE_DESKTOP.values():
if regex.search(user_agent) is not None:
return True
# Bots get the desktop view.
if RE_BOT.search(user_agent) is not None:
return True
# Anything else is probably a phone!
return False
def get_user_agent(request):
# Some browsers put the User-Agent in a HTTP-X header
if 'HTTP_X_OPERAMINI_PHONE_UA' in request.headers:
return request.headers['HTTP_X_OPERAMINI_PHONE_UA']
elif:
# Skyfire/Bolt/other mobile browsers
...
else:
return request.headers.get('HTTP_USER_AGENT', '')
def view(request):
user_agent = get_user_agent(request)
if is_desktop(user_agent):
return desktop_response()
else:
return mobile_response()
Si están usando su propia detección, entonces está rota. Me dijo que mi Opera 10 en Mac OS X es un navegador móvil. – Kornel
No depuré su secuencia de comandos si eso es lo que estás preguntando :) Por supuesto, siempre debes probar todo lo que lees en Internet, pero el principio está ahí –
Este artículo tiene cuatro años y echa de menos una gran cantidad de novedades dispositivos. – bestattendance