原神3.0版获取祈愿URL地址的方法
原神之前的祈愿导入工具,一般都是读取原神LOG日志文件内的URL地址,再对祈愿历史进行导入的。
然而自从原神更新了3.0之后,米哈游已经屏蔽了这种方式,防止被第三方工具读取祈愿记录了。
米哈游为了让玩家不为自己花的钱心疼,利用了各种方式阻止我们获取自己的祈愿记录,他真的……我哭死!
然而有堵就有疏,除了使用代理模式进行HTTP拦截之外,github上已有大佬发现了新的漏洞,可以通过读取剪贴板内HTML代码的方式来获取网页源地址。
https://github.com/EnderSyth/Genshin-Wish-Export
其实这个方法的原理非常简单,Windows支持将HTML源码复制到剪贴板内,用于程序之间的文本格式兼容。然而这个方法不仅会在剪贴板内保存HTML源码,还会在数据头上保留 SourceURL 也就是网页源地址。
利用对数据头上 SourceURL 的读取,我们就可以直接获取到原神祈愿历史的网页地址了。
不过这个方式不知道还能被利用多久,米哈游只需要在 webbrowser 中禁止快捷键即可阻止玩家复制里面的HTML代码了。
下面是我写的URL导出工具,主要是用作 paimon.moe 的导入。
使用方法:
- 打开祈愿界面
点击一下网页
,按下Ctrl+A
和Ctrl+C
- 执行此程序
你可以点击这里下载已编译好的程序:
paimon.moe.helper.exe
paimon.moe.helper.exe.7z
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Windows.Forms
Module paimon_moe_helper
Private Function ParserClipboarUrl() As String
If Not Clipboard.ContainsText(TextDataFormat.Html) Then
Return Nothing
End If
Dim html As String = Nothing
Using ms As MemoryStream = Clipboard.GetData("Html Format")
ms.Position = 0
Dim bs(ms.Length - 1) As Byte
ms.Read(bs, 0, bs.Length)
html = Encoding.UTF8.GetString(bs)
End Using
If html = Nothing Then Return Nothing
Dim m As Match = Regex.Match(html, "^SourceURL:(.+?)$", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
If m.Success Then
Return m.Groups(1).Value
Else
Return Nothing
End If
End Function
Sub Main()
Dim alert As String = "Frist open the Genshin wish history, press Ctrl+A and Ctrl+C, then execute this program!" & vbCrLf & "首先打开原神的祈愿历史,然后按下 Ctrl+A 和 Ctrl+C,最后再打开此程序!"
Dim url As String = ParserClipboarUrl()
If url = Nothing Then
Console.WriteLine(alert)
Console.ReadLine()
Else
Console.WriteLine("Copy to Clipboard: " & url)
Clipboard.SetDataObject(url, True)
Console.ReadLine()
End If
End Sub
End Module
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。