209

如果您要将用户代理存储在数据库中,您会容纳多大?

我发现这篇技术网文章建议将 UA 保持在 200 以下。它看起来不像 HTTP 规范中定义的,至少我发现没有。我的 UA 已经是 149 个字符,而且似乎每个版本的 .NET 都会添加到其中。

我知道我可以解析字符串并将其分解,但我宁愿不这样做。


编辑
基于此博客IE9 将更改为发送短 UA 字符串。这是一个很好的改变。


4

11 回答 11

127

HTTP 规范根本不限制标头的长度。但是,网络服务器确实限制了它们接受的标头大小,413 Entity Too Large如果超过则抛出。

根据网络服务器及其设置,这些限制从 4KB 到 64KB(所有标头的总和)不等。

于 2009-03-17T16:29:36.037 回答
76

我对此的看法:

  • 使用专用表仅存储 UserAgent (对其进行规范化)
  • 在您的相关表中,存储一个外键值以指向 UserAgent自动增量主键字段
  • 将实际的 UserAgent 字符串存储在TEXT 字段中,而不关心长度
  • 拥有另一个UNIQUE BINARY(32) (或 64 或 128,具体取决于您的哈希长度)并对UserAgent 进行哈希处理

一些 UA 字符串可能会变得非常长。这应该可以免除您的后顾之忧。还要在 INSERTer 中强制执行最大长度,以将 UA 字符串保持在 4KB 以下。除非有人在用户代理中向您发送电子邮件,否则不应超过该长度。

于 2012-11-03T15:07:21.137 回答
34

在我们的 apache 日志中注意到类似的内容。对我来说它看起来很不正常,但我经常在日志中看到这些东西,主要来自 Windows 系统。

97690420803;79980706603;9867086703;996602846703;87690803;6989010903;977809603;666601903;876905337803;89670603;89970200903;786903603;696901911703;788905703;896709803;96890703;998601903;88980703;666604769703;978806603;7988020803;996608803;788903297903;98770043603;899708803;66960371603;9669088903;69990703;99660519903;97780603;888801803;9867071703;79780803;9779087603;899708603;66960456803;898706824603;78890299903;99660703;9768079803;977901591603;89670605603;787903608603;998607934903;799808573903;878909603;979808146703;9996088603;797803154903;69790603;99660565603;7869028603;896707703;97980965603;976907191703;88680703;888809803;69690903;889805523703;899707703;997605035603;89970029803;9699094903;877906803;899707002703;786905857603;69890803;97980051903;997603978803;9897097903;66960141703;7968077603;977804603;88980603;989700803;999607887803;78690772803;96990560903;98970961603;9996032903;9699098703;69890655603;978903803;698905066803;977806903;9789061703;967903747703;976900550903;88980934703;8878075803;8977028703;97980903;9769006603;786900803;98770682703;78790903;878906967903;87690399603;99860976703;796805703;87990603;968906803;967904724603;999606603;988705903;989702842603;96790603;99760703;88980166703;9799038903;98670903;697905248603;7968043603;66860703;66860127903;9779048903;89670123903;78890397703;97890603;87890803;8789030603;69990603;88880763703;9769000603;96990203903;978900405903;7869022803;699905422903;97890703;87990903;878908703;7998093903;898702507603;97780637603;966907903;896702603;9769004803;7869007903;99660158803;7899099603;8977055803;99660603;7889080903;66660981603;997604603;6969089803;899701903;9769072703;666603903;99860803;997608803;69790903;88680756703;979805677903;9986047703;89970803;66660603;96690903;8997051603;789901209803;8977098903;968900326803;87790703;98770024803;697901794603;69990803;887805925803;968908903;97880603;897709148703;877909476903;66760197703;977908603;698902703;988706504803;977802026603;88680964703;8878068703;987705107903;978902878703;8898069803;9768031703;79680803;79980803;669609328703;89870238703;99960593903;969904218703;78890603;9788000703;69690630903;889800982903;988709748803;7968052803;99960007803;969900800803;668604817603;66960903;78790734603;8868007703;79780034903;8878085903;976907603;89670830803;877900903;969904889703;7978033903;8987043903;99860703;979805903;667603803;976805348603;999604127603;97790701603;78990342903;98770672903;87990253903;9877027703;97790803;877901895603;8789076903;896708595603;997601903;799806903;97690603;87790371703;667605603;99760303703;97680283803;788902750803;787909803;79780603;79880866903;9986050903;87890543903;979800803;97690179703;876901603;699909903;96990192603;878904903;877904734903;796801446903;977904803;9887044803;797805565603;98870789703;7869093903;87790727703;797801232803;666604803;9778071903;9799086703;6969000903;89670903;8799075903;897708903;88680903;97980362603;97980503903;889803256703;88980388703;789909376803;69690703;6969025903;89970309903;96690703;877901847803;968901903;96690603;88680607603;7889001703;789904761803;976807703;976902903;878907889703;9897014903;896707046603;696909903;666603998903;969902703;79680421803;9769075603;798800192703;97990903;9689024903;668604803;969908671903;9996094703;69990642703;97890895903;977805619903;79980859903;88980443803;98970649603;997602703;888802169903;699907803;667602028803;786903283903;997607703;969909803;798809925903;9976045603;97790903;9789001903;966903603;9789069603;968906603;6989091803;896701603;6979059803;978803903;997606362603;88980803;98970803;88880921703;8997065703;899700703;698908703;797801027903;7889050903;87890603;78690703;99660069703;97980309903;976800603;666606803;898707703;79880019803;66960250803;7978049803;88780602603;79680903;88880792703;96990903;667608603;87790730903;98970903;9699032903;8987004803;88880703;89770046603;978800803;969908903;9798022603;696901903;799803703;989703703;668605903;79780903;998601371703;796803339703;87890922603;898708903;9966061903;66960891903;96790903;8779050803;98870858803;976909298603;9887029903;669608703;979806903;878903803;99960703;9789086703;979801803;66960008703;979806830803;99760212703;786906603;797807603;789907297703;96990703;786901603;796807766603;896702651603;789902585603;66660925903;9986085703;66960302703;69890703;789900703;89970903;9679060703;9789002903;979908821603;986708140803;976809828703;7988082803;79680997903;99960803;9788081903;979805703;787908603;66960602803;9887098703;978803237703;888806804603;999604703;977904703;966904635703;97680291703;977809345603;8878046703;988709803;976900773603;989703903;88780198603;87790603;986708703;78890604703;87790544803;976809850903;887806703;987707527603;79880803;9897059603;897709820603;97880804803;66960026703;9789062803;9867090803;669600603;8967087703;78890903;89770903;97980703;976802687603;66860400803;979901288603;96990160903;99860228903;966900703;66760603;9689035703;9779064703;7968023603;87890791903;98770870603;9798005803;6969087903;9779097903;6979065703;699903252603;79780989703;87690901803;978905763903;977809703;97790369703;899703269603;8878012703;78790803;87690395603;8888042803;667607689903;8977041803;6666085603;6999080703;69990797803;88680721603;99660519803;889807603;87890146703;699906325903;89770603;669608615903;9779028803;88880603;97790703;79780703;97680355603;6696024803;78790784703;97880329903;9699077703;89870803;79680227903;976905852703;8997098903;896704796703;66860598803;9897036703;66960703;9699094703;9699008703;97780485903;999603179903;89770834803;96790445603;79680460903;9867009603;89870328703;799801035803;989702903;66960758903;66860150803;6686088603;9877092803;96990603;99860603;987703663603;98870903;699903325603;87790803;97680703;8868030703;9799030803;89870703;97680803;9669054803;6979097603;987708046603;999608603;878904803;998607408903;968903903;696900703;977907491703;6686033803;669601803;99960290603;887809169903;979803703;69890903;699901447903;8987064903;799800603;98770903;8997068703;967903603;66760146803;978805087903;697908138603;799801603;88780964903;989708339903;8967048603;88880981603;789909703;796806603;977905977603;989700603;97780703;9669062603;88980714603;897709545903;988701916703;667604694903;786905664603;877900803;886805490903;89970559903;99960531803;7998033903;98770803;78890418703;669600872803;996605216603;78690962703;667604903;996600903;999608903;9699083803;787901803;97780707603;787905312703;977805803;8977033703;97890708703;989705521903;978800703;698905703;78890376903;878907703;999602903;986705903;668602719603;979901803;997606903;66760393903;987703603;78790338903;96890803;97680596803;666601603;977902178803;877902803;78790038603;8868075703;99960060603) 787905312703;977805803;8977033703;97890708703;989705521903;978800703;698905703;78890376903;878907703;999602903;986705903;668602719603;979901803;997606903;66760393903;987703603;78790338903;96890803;97680596803;666601603;977902178803;877902803;78790038603;8868075703;99960060603) 787905312703;977805803;8977033703;97890708703;989705521903;978800703;698905703;78890376903;878907703;999602903;986705903;668602719603;979901803;997606903;66760393903;987703603;78790338903;96890803;97680596803;666601603;977902178803;877902803;78790038603;8868075703;99960060603)

于 2011-07-06T11:59:40.017 回答
28

由于它是用于数据库目的并且没有实际限制,我会选择一个 UserAgents 表,其中 UserAgentId 为 Int,UserAgentString 为 NVarChar(MAX) 并在原始表上使用外键。

于 2009-03-17T16:28:26.490 回答
13

这怎么大?:

搜索系统9616306563;搜索系统6017393645;搜索系统5219240075;搜索系统2768350104;搜索系统6919669052;搜索系统1986739074;搜索系统1555480186;搜索系统3376893470;搜索系统9530642569;搜索系统4877790286;搜索系统8104932799;搜索系统2313134663;搜索系统1545325372;搜索系统7742471461;搜索系统9092363703;搜索系统6992236221;搜索系统3507700306;搜索系统1129983453;搜索系统1077927937;搜索系统2297142691;搜索系统7813572891;搜索系统5668754497;搜索系统6220295595;搜索系统4157940963;搜索系统7656671655;搜索系统2865656762;搜索系统6520604676;搜索系统4960161466;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729) 搜索系统6919669052;搜索系统1986739074;搜索系统1555480186;搜索系统3376893470;搜索系统9530642569;搜索系统4877790286;搜索系统8104932799;搜索系统2313134663;搜索系统1545325372;搜索系统7742471461;搜索系统9092363703;搜索系统6992236221;搜索系统3507700306;搜索系统1129983453;搜索系统1077927937;搜索系统2297142691;搜索系统7813572891;搜索系统5668754497;搜索系统6220295595;搜索系统4157940963;搜索系统7656671655;搜索系统2865656762;搜索系统6520604676;搜索系统4960161466;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729) 搜索系统6919669052;搜索系统1986739074;搜索系统1555480186;搜索系统3376893470;搜索系统9530642569;搜索系统4877790286;搜索系统8104932799;搜索系统2313134663;搜索系统1545325372;搜索系统7742471461;搜索系统9092363703;搜索系统6992236221;搜索系统3507700306;搜索系统1129983453;搜索系统1077927937;搜索系统2297142691;搜索系统7813572891;搜索系统5668754497;搜索系统6220295595;搜索系统4157940963;搜索系统7656671655;搜索系统2865656762;搜索系统6520604676;搜索系统4960161466;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729) 搜索系统7742471461;搜索系统9092363703;搜索系统6992236221;搜索系统3507700306;搜索系统1129983453;搜索系统1077927937;搜索系统2297142691;搜索系统7813572891;搜索系统5668754497;搜索系统6220295595;搜索系统4157940963;搜索系统7656671655;搜索系统2865656762;搜索系统6520604676;搜索系统4960161466;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729) 搜索系统7742471461;搜索系统9092363703;搜索系统6992236221;搜索系统3507700306;搜索系统1129983453;搜索系统1077927937;搜索系统2297142691;搜索系统7813572891;搜索系统5668754497;搜索系统6220295595;搜索系统4157940963;搜索系统7656671655;搜索系统2865656762;搜索系统6520604676;搜索系统4960161466;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)

于 2009-11-06T15:12:04.663 回答
6

没有规定的限制,只有大多数 HTTP 服务器的限制。但是请记住这一点,我将实现一个具有合理固定长度的列(使用 Google 查找已知用户代理的列表,找到最大的并添加 50%),然后裁剪任何太长的用户代理 - 任何异常即使被裁剪,长用户代理也可能足够独特,或者是某种错误或“黑客”尝试的结果。

于 2009-03-17T16:48:54.443 回答
5

我今天得到了这个用户代理,溢出了我们供应商的存储领域:

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;GTB6;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30;MDDR;OfficeLiveConnector.1.3;OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)

荒谬的!229 个字符?

所以采用那个尺寸,加倍,再加倍,你应该准备好直到微软的下一个错误(也许明年的这个时候)。

超过1000!

于 2009-06-05T18:06:55.417 回答
4

假设用户代理字符串的长度没有限制,并准备存储这样的值。如您所见,长度是不可预测的。

在 Postgres 中,有一种文本类型可以接受不限长度的字符串。用那个。

但最有可能的是,您必须在某个时候开始截断。以合理有用的增量(200、1k、4k)称其为好,然后扔掉其余的。

于 2013-12-23T15:39:50.263 回答
2

我给你标准答案:

取你能想象到的最大可能值,加倍,这就是你的答案。

于 2009-03-17T16:13:47.337 回答
2

这是257

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;GTB6;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30;InfoPath.2;.NET CLR 3.0.04506.648 ;OfficeLiveConnector.1.3;OfficeLivePatch.0.0;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)

于 2009-08-07T14:18:05.567 回答
2

并不表示用户代理可以得到多大,因为有很多答案显示了他们遇到的边缘情况,但是可以在http://www.useragentstring.com/pages/useragentstring.php 上找到最长的答案? name=All是 250 字节。

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;Media Center PC 5.0; SLCC1;OfficeLiveConnector.1.5;OfficeLivePatch.1.3;.NET4.0C;Lunascape 6.3。

于 2019-06-10T21:14:04.807 回答