Grand comment une chaîne de l'agent utilisateur d'obtenir?
Si vous allez à un magasin de l'agent utilisateur dans une base de données, quelle taille souhaitez-vous accomdate pour?
J'ai trouvé ce article technet qui recommande de s'en tenir UA moins de 200. Il n'a pas l'air comme cela est défini dans la spécification HTTP, du moins pas que je l'ai trouvé. Mon UC est déjà 149 caractères, et il semble que chaque version de .NET sera en rajouter.
Je sais que je peux analyser la chaîne de sortir et de le décomposer, mais je préfère ne pas.
MODIFIER
Sur cette base Blog IE9 va changer pour envoyer la courte chaîne de l'agent utilisateur. C'est un bon changement.
- J'ai posté cette question: stackoverflow.com/questions/17731699/...
- Qu'est-ce que votre chaîne de l'agent utilisateur? Je n'ai trouvé que certaines chaînes avec 137 caractères dans ma base de données (ce qui n'est pas trop grand).
- Quand j'ai posé cette question il y a cinq ans ou plus. UA cordes étaient obtiennent longtemps ils ont compris beaucoup de choses...
- Je dois vous demander, les réponses sur ce fil-ils encore pertinents? La plupart de ces réponses 8 ans.
Vous devez vous connecter pour publier un commentaire.
Spécification HTTP, ne limite pas la longueur des en-têtes à tous.
Cependant, les serveurs web ne limite la taille de tête qu'ils acceptent, en jetant
413 Entity Too Large
si elle dépasse.En fonction de serveur web et de leurs paramètres de ces limites varient de 4 KO 64 ko (total pour tous les en-têtes).
Mon point de vue sur ce:
UNIQUE BINARY(32)
(ou 64, ou 128 en fonction de votre longueur de hachage) et de hachage le UserAgentCertains UA chaînes pouvez obtenir obscène long. Cela devrait vous épargner les soucis. Appliquer une longueur maximale dans votre Insertion pour garder UA chaînes en vertu de 4KO. À moins que quelqu'un est vous envoyer un email dans le user-agent, il ne devrait pas aller au cours de cette période.
Puisque c'est pour les bases de données et il n'y a pas de limite pratique j'irais pour un UserAgents Table avec UserAgentId que Int et UserAgentString de type NVarChar(MAX) et l'utilisation d'une clé étrangère sur la table d'origine.
Remarqué quelque chose comme cela dans nos logs apache.
Il semble anormal pour moi, mais je vais régulièrement voir de telles choses dans les journaux pour la plupart de systèmes Windows.
642
numéros. Les quatre premiers numéros sont toujours6
,7
,8
, ou9
. Le cinquième numéro est toujours0
. Les trois derniers sont toujours603
,703
,803
, ou903
. Peut-être quelqu'un pourrait reconnaître ce modèle? (Demi-vie de 3 confirmé?)Comment est-ce pour les gros?:
Il n'y a pas de limite indiquée, seule la limite de la plupart des serveurs HTTP. En gardant cela à l'esprit, cependant, je voudrais mettre en œuvre une colonne, avec une longueur fixe (utiliser Google pour trouver une liste des agents utilisateurs, trouver le plus grand et ajouter 50%), et juste recadrer n'importe quel utilisateur de l'agent qui est trop long - toute exceptionnellement longue de l'agent utilisateur est probablement assez unique, même lorsqu'elles sont cultivées, ou est le résultat d'une sorte de bug ou de "hack" tentative.
J'ai obtenu cet utilisateur agent aujourd'hui, débordant de notre fournisseur de stockage du terrain:
Ridicule! 229 caractères?
Alors, prenez cette taille, double, double à nouveau, et vous devriez être ensemble jusqu'à ce que Microsoft est la prochaine bourde (peut-être que cette fois l'année prochaine).
Aller plus grand que 1000!
Je vais vous donner la réponse standard:
Prendre la plus grande valeur possible, vous pouvez imaginer qu'il soit, de le doubler, et c'est votre réponse.
Assumer la chaîne de l'agent utilisateur n'a pas de limite de sa longueur et de la préparer pour stocker une valeur. Comme vous l'avez vu, la durée est imprévisible.
Dans Postgres, il y a un texte type qui accepte les chaînes de caractères de longueur illimitée. L'utiliser.
Plus probable, cependant, que vous devrez commencer à les tronquer à un certain point. Appeler cela de bon à un raisonnablement utile d'incrémentation (200, 1k, 4k) et jeter le reste.
Ici est celui qui est 257
Pas une indication de la façon dont grand un agent utilisateur peut obtenir, car il y a beaucoup de réponses, montrant le bord de cas, ils ont est venu à travers, mais la plus longue qui pourrait trouver sur http://www.useragentstring.com/pages/useragentstring.php?name=All était de 250 octets.