早前 GitHub 因为失误部署了屏蔽所有中国 IP 地址的规则,中国 IP 地址访问时会出现禁止访问提示,随后 GitHub 更新规则并解释是部署错误,更新规则后中国 IP 地址可以重新访问。
如果之前是失误那现在肯定就是故意的了,GitHub 部署的新规则会对用户语言进行检查,如果用户使用的是中文 (仅限 zh_CN) 则可能会触发限制而被限制访问,不过从情况来看 GitHub 应该是为了反爬虫的 (例如某 SDN 无差别拉取 GitHub 上的项目搬到自家平台)。从测试情况来看 GitHub 将多个条件整合用来触发限制,例如首先检查 GitHub 的常规规则 (包括黑名单 IP 和 UA),然后检测 IP 地址质量,以上两个条件全部通过后再检查第三个条件,也就是浏览器请求头的语言部分是否包含 zh_CN,如果检测到用户使用的中文则会返回错误。
也就是说 GitHub 并没有针对特定区域的 IP 进行封禁,如果用户 IP 质量没问题的话则不会触发语言检测,因此如果用户使用企业代理软件访问 GitHub 的话就可能因为 IP 地址质量差 (脏 IP) 而触发语言检测。
从这些情况来看 GitHub 大概率是为了反爬虫和反抓取,目前大量 AI 爬虫对 GitHub 疯狂抓取用来训练模型,这种抓取行为不仅会给 GitHub 服务器造成负担,也会浪费大量流量造成 GitHub 成本增加。
如果用户并非爬虫并且访问受到影响,那也可以进行针对性的解决:
-
简单方法就是直接修改请求头将语言修改为 en_US 等其他未被限制的语言
-
更换质量更好的 IP 地址避免触发风控,当然更换 IP 地址可能会增加潜在使用成本
不过针对语言的检测很容易被绕过,接下来 GitHub 很有可能会观察情况并对修改语言的行为进行检测,毕竟反爬虫是个长期工作,GitHub 也只能根据爬虫的情况进行针对性的策略调整实现封禁。 GitHub实施更严格的风控规则阻止中文用户访问 疑似是为了反爬虫和反抓取 – 蓝点网
12 Likes
hamflx
(hamflx)
2
en_US 不爬,就 zh_CN 爬?你把 zh_CN 禁了,难道就不能用 en_US 爬了吗?就算爬仓库,流量大头难道不是 git clone 嘛,干嘛屏蔽 raw 地址?
这个解释很难说的过去。
21 Likes
1a3r3nc3
(Lawrence)
3
GitHub 这么做,象征意义大于实际行为本身。目的是给国内爬虫提个醒。
刑不可知,则威不可测。
hamflx
(hamflx)
5
你这个就更抽象了,这能提醒个什么?屏蔽了 zh_CN 受害者是广大国内用户,于 CSDN/gitcode 而言,那肯定是利好,用户访问不了 GitHub 就会找替代品,说不定更会变本加厉的爬,难不成 GitHub 还能跨国逮捕 CSDN 高管?
1 Like
hamflx
(hamflx)
7
就算他是垃圾中的战斗机,GitHub 不给你用,总有人切换到 CSDN 吧?
hamflx
(hamflx)
8
你支持什么,起不到任何作用,GitHub 不因你屏蔽简中用户。
1a3r3nc3
(Lawrence)
9
一个美国企业没有司法权怎么可能逮捕中国 CSDN 高管?
hamflx
(hamflx)
10
那你刑不可知,是什么刑,让谁知?不会是屏蔽 zh_CN 这种做法就算刑了吧?
1a3r3nc3
(Lawrence)
11
刑:泛指 GitHub 限流 zh_cn
谁:简中用户
回答完毕。
hamflx
(hamflx)
13
那你来回答我,制裁中国普通用户,能实现“给国内爬虫提个醒”吗,能实现制裁 CSDN 吗?
前后矛盾
你前面说目的是给国内爬虫提个醒
现在又说谁是指简中用户
你怎么把两者对等的?
至于支持屏蔽简中用户 我支持你别用
2 Likes
1a3r3nc3
(Lawrence)
19
你说的这个第一个论点是怎么得出来的??? 我什么时候这么说了?另外你一直不回应我的问题,我每次都礼貌回应你的问题。然后你都这样:「我无话可说」,「那你来回答我」,CSDN 可是你自己提出来的,我只觉得 CSDN 是垃圾,自己不用。
中国普通用户用不了 GitHub,是制裁 CSDN,你这么说
大概率?你是说你我这样的用户,大概率是那些公司商业用途的爬虫,例如你们说的CSDN?
1 Like