有人知道,为什么 electron 没办法载入任天堂的网站吗?

2023-01-31 15:41:40 +08:00
 tool2d
按照官方例子,main.js 就改了一句 mainWindow.loadURL("https://accounts.nintendo.com"); 页面无法打开,也没有响应。

换成 baidu 都可以,就是这个不行,百思不得其解。

我在官网下了很多老版本测试,也不行,真的很奇怪。
1135 次点击
所在节点    问与答
12 条回复
gzlock
2023-01-31 16:03:50 +08:00
盲猜 ua 的问题?
tool2d
2023-01-31 16:10:08 +08:00
@gzlock 感觉不像 ua 问题,electron 连页面的成功载入消息都没给我推。

而且开发者控制台输入 window.open("https://accounts.nintendo.com"); 也会堵住后面所有输入。
hahastudio
2023-01-31 17:36:06 +08:00
你的网络能正常打开你说的页面吗,我怀疑是 DNS 的问题
我用 Electron Fiddle 试了一下,用了 Electron v22.1.0 ,没有问题
tool2d
2023-01-31 17:59:18 +08:00
@hahastudio 你可以打开啊?

我差一点就去官方提交 issues 了,那我换台电脑再查查原因。
tool2d
2023-01-31 18:46:06 +08:00
hahastudio
2023-01-31 19:36:30 +08:00
Request URL: https://accounts.nintendo.com/
Request Method: GET
Status Code: 302 Moved Temporarily
Referrer Policy: strict-origin-when-cross-origin

Cache-Control: private, no-cache, must-revalidate, no-store
Connection: keep-alive
Content-Length: 0
Date: Tue, 31 Jan 2023 11:32:19 GMT
Expires: Tue, 31 Jan 2023 11:32:19 GMT
Location: https://accounts.nintendo.com/login?post_login_redirect_uri=https%3A%2F%2Faccounts.nintendo.com%2F
Pragma: no-cache
Server: nginx
Strict-Transport-Security: max-age=2592000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Set-Cookie: ...

我觉得区别在 status code ,一个是 302 ,你给 /a 的话是 404 。
我猜是你那边有处理跳转的 code ,可能没写好
tool2d
2023-01-31 20:27:55 +08:00
@hahastudio 你试一下 curl https://accounts.nintendo.com/login?post_login_redirect_uri=https%3A%2F%2Faccounts.nintendo.com%2F 或者 wget 呢?

离开浏览器,我就取不下数据了。和 electron 一样,直接卡住。
hahastudio
2023-01-31 20:46:42 +08:00
@tool2d 那大概率是因为你的 Chrome 设置代理了
tool2d
2023-01-31 23:16:06 +08:00
@hahastudio 我把 chrome 浏览器的访问日志全部导出,一个个对比参数,终于找到原因了。

任天堂的服务器比较特殊,需要把 curl 里默认的 Connection: close 改成 Connection: keep-alive ,就能正常访问了。

chrome 内核默认 connection:keep-alive, 而 electron 内核默认 connection:close 。
tool2d
2023-02-01 00:08:13 +08:00
上面说的有点问题,通过 Chrome DevTool Protocol 调试发现,electron 内核默认也是 keep-alive 。

终极答案在一楼,就是 UA 被识别到了。

任天堂服务器看到 UA 里有 Electron/22.0.3 ,就拒绝返回!去掉就好了。
tool2d
2023-02-01 00:09:18 +08:00
@gzlock 花了我 8 小时,才验证你的猜想。NB
hahastudio
2023-02-01 10:02:21 +08:00
我这边 Electron 发送的 UA 是
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) scrawny-contract-implement-ypfyw/1.0.0 Chrome/108.0.5359.179 Electron/22.1.0 Safari/537.36

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/911965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX