1
gzlock 2023-01-31 16:03:50 +08:00 1
盲猜 ua 的问题?
|
2
tool2d OP @gzlock 感觉不像 ua 问题,electron 连页面的成功载入消息都没给我推。
而且开发者控制台输入 window.open("https://accounts.nintendo.com"); 也会堵住后面所有输入。 |
3
hahastudio 2023-01-31 17:36:06 +08:00 1
你的网络能正常打开你说的页面吗,我怀疑是 DNS 的问题
我用 Electron Fiddle 试了一下,用了 Electron v22.1.0 ,没有问题 |
4
tool2d OP |
5
tool2d OP |
6
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 ,可能没写好 |
7
tool2d OP @hahastudio 你试一下 curl https://accounts.nintendo.com/login?post_login_redirect_uri=https%3A%2F%2Faccounts.nintendo.com%2F 或者 wget 呢?
离开浏览器,我就取不下数据了。和 electron 一样,直接卡住。 |
8
hahastudio 2023-01-31 20:46:42 +08:00
@tool2d 那大概率是因为你的 Chrome 设置代理了
|
9
tool2d OP @hahastudio 我把 chrome 浏览器的访问日志全部导出,一个个对比参数,终于找到原因了。
任天堂的服务器比较特殊,需要把 curl 里默认的 Connection: close 改成 Connection: keep-alive ,就能正常访问了。 chrome 内核默认 connection:keep-alive, 而 electron 内核默认 connection:close 。 |
10
tool2d OP 上面说的有点问题,通过 Chrome DevTool Protocol 调试发现,electron 内核默认也是 keep-alive 。
终极答案在一楼,就是 UA 被识别到了。 任天堂服务器看到 UA 里有 Electron/22.0.3 ,就拒绝返回!去掉就好了。 |
12
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 |