我收到E429错误
npm ci
(至少从今天开始)npm ci
命令返回E429错误(“太多请求” )并且未完成软件包安装npm ci
此处相同,但带有npm -g install @vue/cli
。
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! code E429
npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz
在我们的管道上有同样的问题。 响应在403 Forbidden
和420 Too Many Requests
我们在AWS中运行的任何CI任务中都看到了这一点
Step 8/11 : RUN npm ci
---> Running in 87051ac87a51
npm ERR! code E429
npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/@types/xxhashjs/-/xxhashjs-0.2.1.tgz
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-02-17T11_49_35_151Z-debug.log
The command '/bin/sh -c npm ci' returned a non-zero code: 1
ERROR: Job failed: exit code 1
同样对我来说竹制:
error 17-feb-2020 12:49:46 npm ERR! code E429
error 17-feb-2020 12:49:46 npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/@snyk/configstore/-/configstore-3.2.0-rc1.tgz
集中式基础架构:〜(
(正在等待验尸,但屏住了呼吸...)
列出(已验证的)公共注册表镜像列表会很有用。 我找到了一些但我不相信他们。
本地和Circle CI均相同
使用Circle CI和本地也能看到相同的结果
npm ERR! code E429
npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz
我看到类似的错误。
“此网站的所有者(registry.npmjs.org)暂时禁止您访问此网站”
和
“您受到速率限制”
我猜这一切有关吗?
在Heroku上部署时,我们也会遇到此问题。
npm ERR! code E429
npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz
在heroku上部署时具有相同的错误。
与AWS CodeBuild和npm i -g aws-cdk相同
28 | npm ERR! 429请求太多-GET https://registry.npmjs.org/aws-cdk
一般服务器问题?
我也有同样的问题
npm ERR! 代码E429
npm ERR! 429请求太多-GET https://registry.npmjs.org/silent-error
在本地安装软件包时,此处相同。
瑞典。
``npm ERR! 代码E429
npm ERR! 429请求过多-GET https://registry.npmjs.org/lodash
是的,我也在Travis上以npm audit
看到了这个:
npm ERR! audit Your configured registry (https://registry.npmjs.org/) may not support audit requests, or the audit endpoint may be temporarily unavailable.
npm ERR! audit The server said:
Access denied | registry.npmjs.org used Cloudflare to restrict access
You are being rate limited
The owner of this website (registry.npmjs.org) has banned you temporarily from accessing this website.
同样的事情在这里发生。 执行npm update
时出现错误
17-Feb-2020 11:47:48 npm ERR! code E429
17-Feb-2020 11:47:48 npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz
这里同样的问题。 我们正在使用竹词。 自己安装。
该文件可从服务器本身访问:
$ wget https://registry.npmjs.org/@babel/plugin -transform-block-scoping /-/ plugin-transform-block-scoping-7.8.3.tgz
--2020-02-17 11:59:28-- https://registry.npmjs.org/@babel/plugin -transform-block-scoping /-// plugin-transform-block-scoping-7.8.3.tgz
正在解析Registry.npmjs.org(registry.npmjs.org)... 104.16.17.35、104.16.24.35、104.16.26.35,...
正在连接至registry.npmjs.org(registry.npmjs.org)| 104.16.17.35 |:443 ...已连接。
HTTP请求已发送,正在等待响应... 200 OK
长度:6735(6.6K)[应用程序/八位字节流]
保存至:“ plugin-transform-block-scoping-7.8.3.tgz”
plugin-transform-block-scoping-7.8.3.tgz 100%[================================== ================================================== = ========================================= >>] 6.58K- .-KB / s在0s
2020-02-17 11:59:28(95.5 MB / s)-'plugin-transform-block-scoping-7.8.3.tgz'已保存[6735/6735]''
也是面临这个问题,这是全球性的事情还是区域性的问题? 去年我们在德国也有类似经历。
同样在这里在Gitlab CI上运行
荷兰也一样。 (来自爱尔兰的AWS Codebuild)
俄罗斯来
伊斯坦布尔在这里
这似乎是Registry.npmjs.org网站与Cloudflare相关的问题。
在更新时收到以下html响应:
<!DOCTYPE html>
npm ERR! <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]-->
npm ERR! <!--[if IE 7]> <html class="no-js ie7 oldie" lang="en-US"> <![endif]-->
npm ERR! <!--[if IE 8]> <html class="no-js ie8 oldie" lang="en-US"> <![endif]-->
npm ERR! <!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!--<![endif]-->
npm ERR! <head>
npm ERR! <title>Access denied | registry.npmjs.org used Cloudflare to restrict access</title>
npm ERR! <meta charset="UTF-8" />
npm ERR! <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
npm ERR! <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
npm ERR! <meta name="robots" content="noindex, nofollow" />
npm ERR! <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />
npm ERR! <link rel="stylesheet" id="cf_styles-css" href="/cdn-cgi/styles/cf.errors.css" type="text/css" media="screen,projection" />
npm ERR! <!--[if lt IE 9]><link rel="stylesheet" id='cf_styles-ie-css' href="/cdn-cgi/styles/cf.errors.ie.css" type="text/css" media="screen,projection" /><![endif]-->
npm ERR! <style type="text/css">body{margin:0;padding:0}</style>
npm ERR!
npm ERR!
npm ERR! <!--[if gte IE 10]><!--><script type="text/javascript" src="/cdn-cgi/scripts/zepto.min.js"></script><!--<![endif]-->
npm ERR! <!--[if gte IE 10]><!--><script type="text/javascript" src="/cdn-cgi/scripts/cf.common.js"></script><!--<![endif]-->
npm ERR!
npm ERR!
npm ERR!
npm ERR! </head>
npm ERR! <body>
npm ERR! <div id="cf-wrapper">
npm ERR! <div class="cf-alert cf-alert-error cf-cookie-error" id="cookie-alert" data-translate="enable_cookies">Please enable cookies.</div>
npm ERR! <div id="cf-error-details" class="cf-error-details-wrapper">
npm ERR! <div class="cf-wrapper cf-header cf-error-overview">
npm ERR! <h1>
npm ERR! <span class="cf-error-type" data-translate="error">Error</span>
npm ERR! <span class="cf-error-code">1015</span>
npm ERR! <small class="heading-ray-id">Ray ID: REDACTED • 2020-02-17 11:26:27 UTC</small>
npm ERR! </h1>
npm ERR! <h2 class="cf-subheadline">You are being rate limited</h2>
npm ERR! </div><!-- /.header -->
npm ERR!
npm ERR! <section></section><!-- spacer -->
npm ERR!
npm ERR! <div class="cf-section cf-wrapper">
npm ERR! <div class="cf-columns two">
npm ERR! <div class="cf-column">
npm ERR! <h2 data-translate="what_happened">What happened?</h2>
npm ERR! <p>The owner of this website (registry.npmjs.org) has banned you temporarily from accessing this website.</p>
npm ERR! </div>
npm ERR!
npm ERR!
npm ERR! </div>
npm ERR! </div><!-- /.section -->
npm ERR!
npm ERR! <div class="cf-error-footer cf-wrapper">
npm ERR! <p>
npm ERR! <span class="cf-footer-item">Cloudflare Ray ID: <strong>REDACTED</strong></span>
npm ERR! <span class="cf-footer-separator">•</span>
npm ERR! <span class="cf-footer-item"><span>Your IP</span>: REDACTED</span>
npm ERR! <span class="cf-footer-separator">•</span>
npm ERR! <span class="cf-footer-item"><span>Performance & security by</span> <a href="https://www.cloudflare.com/5xx-error-landing?utm_source=error_footer" id="brand_link" target="_blank">Cloudflare</a></span>
npm ERR!
npm ERR! </p>
npm ERR! </div><!-- /.error-footer -->
npm ERR!
npm ERR!
npm ERR! </div><!-- /#cf-error-details -->
npm ERR! </div><!-- /#cf-wrapper -->
npm ERR!
npm ERR! <script type="text/javascript">
npm ERR! window._cf_translation = {};
npm ERR!
npm ERR!
npm ERR! </script>
npm ERR!
npm ERR! </body>
npm ERR! </html>
AWS Codebuild us-east-1发生相同的问题。 直到大约30分钟前在本地被破坏,但现在又恢复工作了(来自爱尔兰本地)
这似乎是Registry.npmjs.org网站与Cloudflare相关的问题。
有没有不使用cloudflare的镜像?
同样的问题! 构建管道失败:(
相同: npm ERR! code E429
而已。 互联网已经完成。 大家再见。
我要去吃午饭,希望我回来的时间少于一个小时能解决这个问题。
我们几乎可以确认这是一个npm问题,但是在其状态页面上,所有内容均列为可操作状态。 那么,npm状态页面的目的是什么?
同样的问题。 从us-east-1
AWS
npm ERR! code E429
npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/archy/-/archy-1.0.0.tgz
刚刚在Twitter上与我们联系,🤞我们将很快获得信息。
相同...
npm ERR! code E429
npm ERR! 429 Too Many Requests - GET https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.0.tgz
相同。 不同的软件包,但是从今天早些时候开始,在执行npm install和npm ci时,总是收到429个请求
:(
自从今天早上以来我们都很沮丧。 NPM损坏。 都柏林在这里
现在适合我。 5 $ /包。 下午我。
现在适合我。 5 $ /包。 下午我。
很便宜
在韩国,我也面临这个问题。
$ npm install --save-dev typescript
npm ERR! code E429
npm ERR! 429 Too Many Requests: [email protected]
每个NPM软件包的安装时间都太长。
NPM发生了什么?
幸运的是,我们只需要坐着等
想象一下,如果我们都是建筑工人,突然所有锤子在世界各地停止工作:思考:
在您的构建中使用yarnpkg镜像怎么样?
确实😄
您可以使用: https :
# npm
npm config set registry https://npm.open-registry.dev
# yarn
yarn config set registry https://npm.open-registry.dev
在多个环境(travis,本地,服务器)中存在相同的问题。
NPM:近乎完美的镜子
NPM:周一不表演
NPM:星期一没问题
Gitlab运行程序中的同一问题
在heroku中尝试构建时出现相同的问题。 CF错误代码1015。
该网站的所有者(registry.npmjs.org)已暂时禁止您访问该网站
当我执行npm install命令时,我也收到此错误消息:“访问被拒绝| registry.npmjs.org使用Cloudflare来限制访问。您的速率受到限制。此网站的所有者(registry.npmjs.org)暂时禁止了您通过访问该网站。 ”。
我来自菲律宾宿雾。 这是CloudFlare问题还是NPM?
该网站的所有者(registry.npmjs.org)已暂时禁止您访问该网站。
大家好,我们可能会把它限制在实际有用的范围内,以便人们重新开始工作。
看来这个问题相当普遍,而不是每个人都在“ X上发生了这件事”上发贴,直到我们听到NPM的消息后,我们才会紧紧抓住? 或者,如果受影响,我们可以+1评论。
NPM:不是程序包管理器
我们也在瑞典这里过时了👌🙆♂
看来这个问题相当普遍,而不是每个人都在“ X上发生了这件事”上发贴,直到我们听到NPM的消息后,我们才会紧紧抓住? 或者,如果受影响,我们可以+1评论。
罗,模因和无用的评论为胜利
在AWS build上遇到相同的问题
这是否意味着我们可以第二次午餐了?
在CircleCi构建上有相同的问题
在Github Actions上也有同样的问题!
哇,模因评论XD
伙计们,当我们压力很大的时候,全都在同一条船上,分享一些爱,真是太棒了,但是...我们可以停止对彼此说“我也是”吗?
模因总是受到欢迎,顺便说一句!
这是过度依赖他人计算机的结果。 @phaberest你是毫无意义的,我也是:-}
相同!
NPM刚刚告诉我,感谢大家,我们可以休息一天。
这里同样的问题
这仍然适用吗?
相同
Npm总部现在:
我假设npmjs办公室现在#npm pic.twitter.com/wZy0Bo3PM8
-Nick Hammond(@thehappypenguin) 2020年2月17日
问题现已解决
NPM:
谣言称NPM包装已被冠状病毒感染
我认为这是一个很好的示例,为什么当由于NPM注册表中断而无法部署应用程序时,强烈建议安装自己的npm注册表/代理来保护类似问题
当您等待NPM可用时
NPM希望我们休息一下
写“相同”是低评价。
同样在卡西欧FX-991ESPLUS上
NPM:现在,发布Memes!
中国也一样。
在我们的构建服务器(Teamcity)和本地上运行npm install时,存在相同的问题。
我现在正在开始一个python课程。
我喜欢这个问题,实际上并没有阻止我工作。 但是,在这里发布模因的人阻止了我。 我爱它:D
我喜欢巧克力牛奶
相关主题.. https://github.com/nextcloud/maps/issues/300
因为我很懒,所以会从那里链接我的帖子。https : //github.com/nextcloud/maps/issues/300#issuecomment -586973011
是的,我可以npm ci
NPM:无配套
我正在参加客户会议,无法演示:[
我正在参加客户会议,无法演示:[
太好了您要向客户演示npm install
吗?
我有同样的问题
印度周一也没有管道Pipe
噢,天哪,请与他人共享node_modules
文件夹!
这里也是
“所有系统都可操作”-最大的谎言
不稳定但没有改善?
NPM:决不推Mo
@ anant-k-singh是的,模因,你去哪儿了? ;-)现在,在前端社区中有很多麻烦。
...以及在需要时该本地/站点本地缓存npm代理在哪里?
https://status.npmjs.org/非常有用...
为了天堂,有人应该将angularjs node_modules文件夹上传到Google驱动器
我正在参加客户会议,无法演示:[
FeelsBadMan,糟糕的“演示能力”使整个世界都受到影响。
他们更新了状态页面。
npm WARN不建议使用https://github.com/request/request/issues/3142
npm ERR! 代码E429
npm ERR! 429请求太多-GET https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.5.tgz
npm ERR! 可以在以下位置找到此运行的完整日志:
npm ERR! C:\ Users \ Lenovo \ AppData \ Roamingnpm-cache_logs \ 2020-02-17T12_50_04_887Z-debug.log
我在这里只是为了模因
大家好,我们可以将模因和笑话留给各自的Slack / Discord / IRC频道,而不是这个GitHub问题吗? 他们已经意识到了这个问题,并且已经更新了StatusPage。
npm ERR! 代码E429。 这里!
“所有系统都可操作”-最大的谎言
jq -r '.dependencies * .devDependencies | keys[]' package.json | xargs -L 1 -I {} sh -c "echo installing {}; npm i {}; sleep 10"
如果您一次不安装所有软件包,似乎可以正常工作...如果您不顾一切就可以使用,但是速度很慢...
某些用户使用403/429 Erros
怎么样?
嗨,对此有任何更新吗?
E429
也在这里(荷兰)
从由Azure DevOps触发的本地计算机进行构建。
终于开始工作了(状态页面💃)
从1个半小时开始下降。 希望我们尽快找到解决办法
临时修复对我有用,打开package-lock.json
查找https://registry.npmjs.org
并替换为https://registry.npmjs.com
运行npm ci
很高兴知道我并不孤单🤣
他们说:“一些用户收到了”
火星上也一样。
失去了一切希望
如果npm永远停止,世界将会发生什么,这有点思想家
这个问题使我第一次尝试纱线。 发挥魅力!
我的占星家预言了这一事件。
我正在参加客户会议,无法演示:[
太好了您要向客户演示
npm install
吗?
我的同事说没有带我的笔记本电脑,他可以拿来。
Teamviewer通过...
当模因的加载速度比NPM快时
嗨npm团队
您可以重新启动计算机吗?
最好的祝福
来了这个问题,呆了模因
请尊重并避免在此主题中发布除模因以外的任何内容。 谢谢。
它的作品
NPM安装终于为我工作
我有一个待售的Angular9 node_modules目录。 DM我您的报价
它还活着!
@npm
啊,下来没那么久,不再有memeland :(
这是我从npm现场直播的报道。 看起来它再次正常工作!
干杯
临时修复对我有用,打开package-lock.json
查找https://registry.npmjs.org
并替换为https://registry.npmjs.com
运行npm ci
谢谢。 这个对我有用。
欢呼它开始工作
哦,不...我的邮件通知! 🌊
加工!
好的,这很有趣。 下次见
临时修复对我有用,打开package-lock.json
查找https://registry.npmjs.org
并替换为https://registry.npmjs.com
运行npm ci
为我工作
看来问题标题将从“太多请求”更改为“太多评论”
它已经是列表中评论最多的问题
(当github问题的更新速度快于npm状态页时)
也为我工作
您尝试过rm -rf node_modules/ package-lock.json && npm install
吗?
等待投票
https://github.com/npm/cli/issues/836#issuecomment -586973004
您可以使用: https :# npm npm config set registry https://npm.open-registry.dev # yarn yarn config set registry https://npm.open-registry.dev
为何所有否决票为open-registry
?
或者,尝试npm config set registry https://registry.npm.taobao.org
这很有趣
出售node_modules。 pm我好报价:D
您尝试过
rm -rf node_modules/ package-lock.json && npm install
吗?
429投票不足
玩得开心NPMing。
我在NPM说停止提交模因时的反应
您是否尝试过重启PC,也许错误会消失。 因为它帮助了我。
我的构建再次开始工作! 猜猜他们将其关闭然后再打开
休斯顿,它在这里工作。
现在也为我工作
出售node_modules。 pm我好报价:D
您可以在开源社区中写的最糟糕的事情thing
好似乎是固定的。 在新加坡AWS地区工作
现在工作!
现在工作北弗吉尼亚州AWS地区
现在工作-51区
现在可以使用了。 感谢NPM支持团队。 萨那全部<3
稍后再见,互联网人士
先生们,这是一种荣幸!
关闭它,也许吗?
返回保加利亚在线。 谢谢,伙计们!
我们可以再做一次吗?
我的名字杰夫
CI启动并运行..现在开始工作..这是一种荣幸
这次故障帮助我简化了Dockerfile,这可不是开玩笑。
感谢您的牵手。
请锁定此问题,我无法恢复任何人的工作,包括我自己
英国在这里。 在安装next.js时遇到429问题,但是react和react-dom很好。 现在一切都还好
嗨npm团队
您可以重新启动计算机吗?
最好的祝福
他们终于做到了!!! 3次...
现在在瑞典工作🇸🇪!
NPM不可用时,下次见!
至少github似乎高度可用
GitHub试图实时更新表情符号响应,就像表情符号烟花一样。
下一期:GitHub崩溃:D
原因:NPM中的请求太多了#837 836
Success! created app at C:/XXXX
“监视-我们的内容交付合作伙伴已通知我们他们已实施修复。我们正在监视。”
Cloudflare问题?
密歇根州大急流城
这是我对Github的第一条评论,反应如此之多-爱大家❤️很快见
编辑:如此多的否决票*😄保持下去! 下来,我的意思是..
拉尔夫打破了互联网!
只想成为其中的一部分。 做好NPM👍
所以我们现在都做模因吗?
终于可以了!!!
(https://user-images.githubusercontent.com/57898245/74657035-b1009500-518f-11ea-9e95-290b51db7dbb.png)
现在看起来像固定的。
请锁定它,我不能让任何人包括我自己重新上班
没有
NPM问题将人们召集在一起:)
既然您全神贯注,我是否会对您最新的金字塔计划感兴趣?
捷克共和国现在一切都很好:)感谢NPM团队
NPM使用FORCE
在伊朗也可以,有趣的问题!
npm总部现在
让模因力量与你同在
🇵🇹
大声笑
我的软件包无法安装!
哦,天哪,我来晚了,现在正在工作。
谢谢互联网!
控制台更改为npm:100:
嘿,我是在这里报告与...有关的错误
▲
▲▲
PSHH PSHH YOBA MI V EFIRE !! 1♂️
所有的模因火车上! 🚂
在问题中发布模因/笑话会浪费实际上需要能够阅读问题的人员的时间。
停下来。 如果需要,使用表情符号会做出反应。
我们需要更多这些错误,尤其是在星期一。
@cmcarey微笑和笑从来都不是一件坏事,它永远不会浪费时间,它实际上可以提高您的生产力,模因和笑话使我们成为人,而不仅仅是工作机器,甚至底特律也成为人!
您好,来自同一家加拉利卡!
您好,来自互联网!
至少它可能很快成为最受关注的问题。
建议:在npm状态页面上为“ CDN服务”创建一个条目,因为实际问题似乎出在Cloudflare上
https://github.com/npm/cli/issues/836#issuecomment -586992790
@cmcarey微笑和笑从来都不是一件坏事,它永远不会浪费时间,它实际上可以提高您的生产力,模因和笑话使我们成为人,而不仅仅是工作机器,甚至底特律也成为人!
现在不是时候了。 像我们在这里看到的那样,大量的评论使分类工作变得很复杂,以查找可以帮助实际解决问题的人员的细节。
现在在巴西工作:巴西:!
来自npm security的Andre在这里。 我们的内容交付合作伙伴已通知我们他们已实施修复程序。 我们将继续监视局势。 您可以在我们的状态页面中找到更多信息: https :
解决问题,但是如果您有任何问题,请联系support@npmjs.com
@aeleuterio我们有机会对此进行验尸吗?
现在工作!
我的天啊。 不要再这样做! 曾经! )))))
它不再工作了。 我想,问题尚未由您的合作伙伴解决。
@cmcarey微笑和笑从来都不是一件坏事,它永远不会浪费时间,它实际上可以提高您的生产力,模因和笑话使我们成为人,而不仅仅是工作机器,甚至底特律也成为人!
模因和笑话淹没了对话,这对于解决实际上的问题可能至关重要。
现在工作😓
模因和笑话淹没了对话,这对于解决实际上的问题可能至关重要。
确实,我必须滚动浏览约200个模因才能看到NPM的实际状态更新。
仅为您提供信息:纱线能够在不触发速率限制的情况下装载卷装:1)
纱线很棒! (安全)
来自Cloudflare的问好和歉意,直接在问题注释中进行事后分析。
我是DDoS保护团队的工程经理,今天上午11:06 UTC,我们调整了一条影响我们信号之一的规则。 该信号与HTTP引用标头有关,我们有一段代码可以查看无效的引用标头。 在这种情况下,我们对其进行了调整,以使其不仅包括“明显的垃圾”,而且包括“任何不符合HTTP规范的内容” ...即引用者是URI吗? 如果不是,则有助于了解不良流量。
那么...这为什么影响npmjs.org? 事实证明,根据HTTP规范,大量NPM流量将引用发送为“安装”,这是无效的。 由于NPM也是一个繁忙的站点,这导致DDoS系统将其接收并将该流量视为HTTP泛滥,并确定应应用速率限制。
当我们注意到NPM看到HTTP 429s增多(在Twitter上看到)时,我们联系了NPM并开始了内部调查。 一旦确定了根本原因,我们便恢复了更改,该更改是在世界标准时间13:00。
我们将注意到NPM和另外1个站点出于HTTP规范之外的目的而使用了引荐来源网址,并且我们将更新我们的系统以确保不会再次发生这种情况。 另外,我们将改进对这种性质的更改的监视,以便我们更快地发现影响并自动回滚。
感谢您的解释@ buro9
鉴于对开发人员社区的重要性,希望您将对NPM进行一些明确的测试。
我们(我敢肯定还有很多其他项目)今天早上在欧盟营业时间内无法部署2个项目。 这也应该提醒我们大家在这些事件发生时采取更好的连续性措施。
我认为,最好确保NPM安装程序的请求符合HTTP规范。
我认为,最好确保NPM安装程序的请求符合HTTP规范。
推荐人应为空白,安装者应为用户代理
谢谢,我能够每15分钟下载我所有的5464950依赖项,以再次进行另一个构建。
@ buro9 ,如果您响应我们的票证和内部松懈的通讯,我们将不胜感激,在发布到公共发行之前,我们仍然没有收到最近两次停机的验尸报告。
至于指向HTTP规范,考虑到这种行为已经存在多年了,我想请您回顾一下今天导致CF突然导致“符合HTTP规范”结果的更改吗?
我将再次要求跟进我们的公开门票,并在验尸中向我们报告最后两次停机,我们宁愿直接从您那里了解到这一点,而不是在github上看到它。 。
您好和Cloudflare的道歉,
我认为您不必道歉。 npm显然弄乱了引荐来源网址字段,您没有做错任何事情。 仅仅因为它在过去意外地解决了,并不意味着它应该保持这种状态。 谁能保证这样的事情将来不会再次发生,因为有人遵守该规范?
npm显然弄乱了引荐来源网址字段,您没有做错任何事情。 仅仅因为它在过去意外地解决了,并不意味着它应该保持这种状态。
这称为BC中断,不应在同一“版本”中发生。
npm显然弄乱了引荐来源网址字段,您没有做错任何事情。 仅仅因为它在过去意外地解决了,并不意味着它应该保持这种状态。
这称为BC中断,不应在同一“版本”中发生。
是的,我告诉你这一点。 但是希望该决定不会是“那样一直存在,每个人都必须遵守”。
(...)
我们调整了一条影响我们信号之一的规则。 该信号与HTTP引用标头有关,我们有一段代码可以查看无效的引用标头。
(...)
那么...这为什么影响npmjs.org? 事实证明,根据HTTP规范,大量NPM流量将引用发送为“安装”,这是无效的。
Referer
标头是否允许使用相对/部分URI? https://tools.ietf.org/html/rfc7231#section -5.5.2
5.5.2. Referer The "Referer" [sic] header field allows the user agent to specify a URI reference for the resource from which the target URI was obtained (i.e., the "referrer", though the field name is misspelled). A user agent MUST NOT include the fragment and userinfo components of the URI reference [RFC3986], if any, when generating the Referer field value. Referer = absolute-URI / partial-URI
在不探测服务器是否存在URI的情况下,如何区分实际的部分URI中的任意,urlencoded文本?
如果我遵循规范的推论,那么乍一看Referer
标头install
可能是完全有效的:
https://tools.ietf.org/html/rfc7230#section -2.7
relative-part = <relative-part, see [RFC3986], Section 4.2> partial-URI = relative-part [ "?" query ]
https://tools.ietf.org/html/rfc3986#section -4.2
relative-ref = relative-part [ "?" query ] [ "#" fragment ] relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-empty
https://tools.ietf.org/html/rfc3986#section -3.3
path-noscheme = segment-nz-nc *( "/" segment ) segment = *pchar segment-nz = 1*pchar segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" ) ; non-zero-length segment without any colon ":" pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
因此,如果我不是非常误解该规范,我想知道:为什么引用人标头被视为无效? Cloudflare是根据请求检查该URI是否存在(然后将其缓存),还是又一次快速松散的“ whoopsie”?
在语法上, install
,但是在引用的文本下面几行是这样的:
If the target URI was obtained from a source that does not have its
own URI [...], the user agent MUST either exclude the
Referer field or send it with a value of "about:blank".
这个恕我直言在这里适用。
但是,这不能回答您的最后一个问题。 但是似乎该主题有点复杂,分为两个部分:1)npm符合http规范,以及2)CF是否使用可靠的检测规则。 也许,也许,这两个问题的答案都是:不。 但是,我将此留给其他人讨论。 我只是想指出,过早地为“某事”道歉可能会导致潜在的错误未得到解决,因此措辞对于解决问题的真正“解决方案”可能是有点不幸的。
与其在第一天实施block mode
,不如将它放置在observe mode
已有一段时间。
在语法上,
If the target URI was obtained from a source that does not have its own URI [...], the user agent MUST either exclude the Referer field or send it with a value of "about:blank".
这个恕我直言在这里适用。
是的,它确实。 也许我还不够清楚,我已经完全意识到了这一点。 但这完全不是重点。
正如您已经指出的
(…)主题似乎有点复杂,分为两个部分:1)npm符合http规范,以及2)CF是否使用可靠的检测规则。 (...)
而且我已经指出,如果没有显式检查Referer
URI的存在,则无法确定标头的有效性。
npm是否违反规范? 当然。
CF可以正确检测到吗? 仅通过对URI执行显式检查。 CF是否执行该检查? 我还不知道……(但是我可能会为此建立一个测试场)。
但是,如果没有进一步的信息,我只能假设CF再次像CF一样,并且由于没有充分的理由破坏了Internet的一部分……再次。
值得牢记的是,CDN几乎无能为力,这将有意义地改善其服务,并且不会带来“破坏互联网的一部分”的风险。 CF提供的服务的性质以及它们作为提供该服务所应有的受欢迎程度,这意味着它们基本上总是在玩火,如果他们原谅并原谅他们,那么很可能会使很多人不高兴错误。
我已经做了很长时间的npm事情了,我对他们的立场并不缺乏同情,我认为对此不以为然。 他们做得很好,可以保护npm(从而保护整个JS社区)免受许多不良行为和故障的影响,并使我们的所有构建都更快,更可靠。 我们喜欢并欣赏Cloudflare。 因此,让我们在这里好点。
话虽这么说,但我确实相信npm在使用Referer标头指示导致发出给定请求的命令时,既没有违反字母,也没有违反相关HTTP规范的精神。 我希望所有经过此讨论的人都能发现以下HTTP pedantry有用或至少令人愉快。 如果那不是您的喜好,请去做其他事情,您将不会很开心阅读本文:)
CF部署了一项更改,将对HTTP标头的异常使用视为一种启发式方法,将其标记为恶意请求。 当主要处理来自Web浏览器的流量时,Referer标头通常通常会丢失, about:blank
或完全限定的URL。 因此,像Referer: install
这样的标头很奇怪。
但是:规范显示为“ URI”。 它不说“ URL”。 它当然不会说“完全合格的URL”。 鉴于IETF文档中通常对“ URI”和“ URL”进行了细致的使用,因此,诸如此类的讨论经常引起发散讨论,并且Referer首次出现在
URI和URL是不同的。 自以后的RFC以来,这两个链接的RFC均已被更新和作废(部分),并且我强烈鼓励仍在阅读此刻的任何人关注这些链接,并了解统一资源位置和标识标准如何在细微的变化和范围内扩展多年来的有趣方式。
底线是这样的:HTTP Referer
标头不必是统一资源_Locator_,而是统一资源_Identifier_。 不需要此标识符使用众所周知的URI方案,也不必是完整格式,而不是相对格式。 对此的唯一限制是(a)它必须是URI,并且(b)如果该请求满足了没有任何类型标识符的直接用户请求,例如在地址栏中键入URL,则必须将其省略。
URI明确要求任何给定的网络代理或通过任何给定的协议都可以定位,获取或解析URI。
因此, install
是用户与之交互并导致请求产生的事物的标识符。 他们没有在地址栏中输入包或tarball的URL,而是输入npm install
,而_it_则通过HTTPS来获取资源。 为了解析该资源,它必须发出一些HTTP请求。 没有提供方案,但不需要任何方案。 “安装”是标识资源的一系列紧凑字符。 它是一种无方案(即未完全验证)的URI。
由于URI语义和语法由其方案定义,因此在没有方案的情况下,不可能说install
是无效的。 例如, tel:+12345678901
是有效的URI(和有效的URL),但是http:+12345678901
不是。 为了知道+12345678901
是否是有效的部分URI,您必须知道该方案。 它的可定位性将取决于美国东北俄亥俄州的电话系统的详细信息。 如果以该号码拨打自动化系统的电话触发了发出HTTP请求,则该HTTP请求最好包含Referer标头+12345678901
。 如果服务器期望从这样的电话系统获得请求,则它可以基于上下文推断该方案。
这正是npm客户端和npm注册表发生的情况。 它发送包含正在运行的命令的Referer标头。 (当命令包含位置参数时,将删除任何包含/
或\
内容,因为这可能是私有路径,URL或git repo。)从语义和语法上来说,这是正确且适当的在这种非浏览器上下文中使用HTTP Referer标头,我真诚地认为,如果IETF的目的不是经过30年的修订,分析和审查,则经过本规范的多个版本在Referer规范中,它会说“ URL”而不是“ URI”。
只是重申一下,我当然不认为Cloudflare在这里是一个坏演员,而且我很失望地看到这么多人去争夺双方的速度有多快,就好像在这场战斗中npm vs Cloudflare一样。 我们受到他们所犯错误的影响,但是有时我们会受到他们所犯错误的影响,因为我们是他们的客户,当然,他们会不时犯错误,因为人与机器并不完美。 世界就是这样。 总的来说,我们对收到的响应感到非常满意,并且鉴于此,我们都改进了监控和响应系统。
FWIW,的“参照”没有被定义为URI。 请参阅规格: https :
@reschke即使阅读,它仍然是完全有效的。
也就是说:从https://registry.npmjs.org/foo
到Referer: install
,完全解析的Referer将是有效的URI https://registry.npmjs.org/install
。 从https://registry.npmjs.org/foo/-/foo-1.2.3.tgz
,它将是https://registry.npmjs.org/foo/-/install
,也是一个有效的URI。
即使我阅读的规范比预期的要广,以这种方式使用Referer肯定不是对规范的“违背”,并且(完全可以原谅!)错误地超出了阻止或限制包含Referer的请求的范围标头不是完全合格的URL。
但是,鉴于此,可能值得在npm cli发送的Referer标头上放置一个方案。 我们必须对此进行研究,以查看这是否会使代理处理请求的可能性更大或更小。 当然,另一种选择是接受某些代理将急于进行过滤,从而导致理想数据略有减少,但应使用具有更明确含义的自定义标头,例如npm-command: install
。 我们对npm-session
标头执行此操作以将请求分组在一起,并且发现了一些案例,尽管用户代理暗示它是一个“真实的” npm客户端(或位于至少声称是)。
最有用的评论
来自Cloudflare的问好和歉意,直接在问题注释中进行事后分析。
我是DDoS保护团队的工程经理,今天上午11:06 UTC,我们调整了一条影响我们信号之一的规则。 该信号与HTTP引用标头有关,我们有一段代码可以查看无效的引用标头。 在这种情况下,我们对其进行了调整,以使其不仅包括“明显的垃圾”,而且包括“任何不符合HTTP规范的内容” ...即引用者是URI吗? 如果不是,则有助于了解不良流量。
那么...这为什么影响npmjs.org? 事实证明,根据HTTP规范,大量NPM流量将引用发送为“安装”,这是无效的。 由于NPM也是一个繁忙的站点,这导致DDoS系统将其接收并将该流量视为HTTP泛滥,并确定应应用速率限制。
当我们注意到NPM看到HTTP 429s增多(在Twitter上看到)时,我们联系了NPM并开始了内部调查。 一旦确定了根本原因,我们便恢复了更改,该更改是在世界标准时间13:00。
我们将注意到NPM和另外1个站点出于HTTP规范之外的目的而使用了引荐来源网址,并且我们将更新我们的系统以确保不会再次发生这种情况。 另外,我们将改进对这种性质的更改的监视,以便我们更快地发现影响并自动回滚。