diff --git a/launcher/src/launchercore.cpp b/launcher/src/launchercore.cpp index ae62449..45c0916 100755 --- a/launcher/src/launchercore.cpp +++ b/launcher/src/launchercore.cpp @@ -345,8 +345,18 @@ void LauncherCore::buildRequest(const Profile &settings, QNetworkRequest &reques if (settings.account()->config()->license() == Account::GameLicense::macOS) { request.setHeader(QNetworkRequest::UserAgentHeader, QByteArrayLiteral("macSQEXAuthor/2.0.0(MacOSX; ja-jp)")); } else { - request.setHeader(QNetworkRequest::UserAgentHeader, - QStringLiteral("SQEXAuthor/2.0.0(Windows 6.2; ja-jp; %1)").arg(QString::fromUtf8(QSysInfo::bootUniqueId()))); + const auto hashString = QSysInfo::bootUniqueId(); + + QCryptographicHash hash(QCryptographicHash::Sha1); + hash.addData(hashString); + + QByteArray bytes = hash.result(); + bytes.resize(4); + + auto checkSum = (uint8_t)-(bytes[0] + bytes[1] + bytes[2] + bytes[3]); + bytes.prepend(checkSum); + + request.setHeader(QNetworkRequest::UserAgentHeader, QStringLiteral("SQEXAuthor/2.0.0(Windows 6.2; ja-jp; %1)").arg(QString::fromUtf8(bytes.toHex()))); } request.setRawHeader(QByteArrayLiteral("Accept"), @@ -354,6 +364,8 @@ void LauncherCore::buildRequest(const Profile &settings, QNetworkRequest &reques "application/x-ms-xbap, */*")); request.setRawHeader(QByteArrayLiteral("Accept-Encoding"), QByteArrayLiteral("gzip, deflate")); request.setRawHeader(QByteArrayLiteral("Accept-Language"), QByteArrayLiteral("en-us")); + request.setRawHeader(QByteArrayLiteral("Connection"), QByteArrayLiteral("Keep-Alive")); + request.setRawHeader(QByteArrayLiteral("Cookie"), QByteArrayLiteral("_rsid=\"\"")); } void LauncherCore::setupIgnoreSSL(QNetworkReply *reply) diff --git a/launcher/src/squareenixlogin.cpp b/launcher/src/squareenixlogin.cpp index 51c8483..fc5dcd1 100644 --- a/launcher/src/squareenixlogin.cpp +++ b/launcher/src/squareenixlogin.cpp @@ -265,6 +265,8 @@ QCoro::Task> SquareEnixLogin::getStor auto request = QNetworkRequest(url); m_launcher.buildRequest(*m_info->profile, request); + request.setRawHeader(QByteArrayLiteral("Referer"), m_info->profile->frontierUrl().toUtf8()); + Utility::printRequest(QStringLiteral("GET"), request); const auto reply = m_launcher.mgr()->get(request);