steamutils 1.4.21 → 1.4.23
Sign up to get free protection for your applications and to get access to all the features.
- package/.idea/codeStyles/Project.xml +1 -0
- package/.idea/deployment.xml +14 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.prettierrc.json +3 -3
- package/SteamClient.js +2658 -2658
- package/bufferHelpers.js +115 -115
- package/cheerio.js +103 -103
- package/const.js +336 -336
- package/create_remote_file.js +66 -66
- package/index.js +284 -3
- package/package.json +1 -1
- package/protos/csgo/base_gcmessages.proto +553 -553
- package/protos/csgo/base_gcmessages_csgo.proto +547 -547
- package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
- package/protos/csgo/clientmessages.proto +48 -48
- package/protos/csgo/connectionless_netmessages.proto +17 -17
- package/protos/csgo/cs_gameevents.proto +35 -35
- package/protos/csgo/cs_usercmd.proto +34 -34
- package/protos/csgo/cstrike15_gcmessages.proto +1431 -1431
- package/protos/csgo/cstrike15_usermessages.proto +592 -592
- package/protos/csgo/demo.proto +165 -165
- package/protos/csgo/econ_gcmessages.proto +219 -219
- package/protos/csgo/engine_gcmessages.proto +14 -14
- package/protos/csgo/enums_clientserver.proto +1529 -1529
- package/protos/csgo/fatdemo.proto +125 -125
- package/protos/csgo/gameevents.proto +120 -120
- package/protos/csgo/gcsdk_gcmessages.proto +323 -323
- package/protos/csgo/gcsystemmsgs.proto +243 -243
- package/protos/csgo/netmessages.proto +618 -618
- package/protos/csgo/network_connection.proto +126 -126
- package/protos/csgo/networkbasetypes.proto +246 -246
- package/protos/csgo/networksystem_protomessages.proto +17 -17
- package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
- package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
- package/protos/csgo/steammessages.proto +620 -620
- package/protos/csgo/steammessages_base.proto +301 -301
- package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
- package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
- package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
- package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
- package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
- package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
- package/protos/csgo/steammessages_unified_base.steamworkssdk.proto +30 -30
- package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
- package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/csgo/te.proto +259 -259
- package/protos/csgo/uifontfile_format.proto +13 -13
- package/protos/csgo/usercmd.proto +39 -39
- package/protos/csgo/usermessages.proto +752 -752
- package/protos/csgo/valveextensions.proto +17 -17
- package/protos/google/protobuf/descriptor.proto +281 -281
- package/protos/steam/clientmetrics.proto +45 -45
- package/protos/steam/content_manifest.proto +62 -62
- package/protos/steam/contenthubs.proto +41 -41
- package/protos/steam/encrypted_app_ticket.proto +10 -10
- package/protos/steam/enums.proto +501 -501
- package/protos/steam/enums_clientserver.proto +1508 -1508
- package/protos/steam/enums_productinfo.proto +14 -14
- package/protos/steam/htmlmessages.proto +1039 -1039
- package/protos/steam/offline_ticket.proto +8 -8
- package/protos/steam/steamdatagram_messages_auth.proto +65 -65
- package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
- package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
- package/protos/steam/steammessages_appoverview.proto +204 -204
- package/protos/steam/steammessages_auth.steamclient.proto +375 -375
- package/protos/steam/steammessages_base.proto +335 -335
- package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
- package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
- package/protos/steam/steammessages_client_objects.proto +649 -649
- package/protos/steam/steammessages_clientlanp2p.proto +43 -43
- package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
- package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
- package/protos/steam/steammessages_clientserver.proto +392 -392
- package/protos/steam/steammessages_clientserver_2.proto +771 -771
- package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
- package/protos/steam/steammessages_clientserver_friends.proto +260 -260
- package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
- package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
- package/protos/steam/steammessages_clientserver_login.proto +167 -167
- package/protos/steam/steammessages_clientserver_mms.proto +233 -233
- package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
- package/protos/steam/steammessages_clientserver_uds.proto +125 -125
- package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
- package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
- package/protos/steam/steammessages_clientsettings.proto +208 -208
- package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
- package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
- package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
- package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
- package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
- package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
- package/protos/steam/steammessages_econ.steamclient.proto +137 -137
- package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
- package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
- package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
- package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
- package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
- package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
- package/protos/steam/steammessages_hiddevices.proto +157 -157
- package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
- package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
- package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
- package/protos/steam/steammessages_market.steamclient.proto +22 -22
- package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
- package/protos/steam/steammessages_offline.steamclient.proto +33 -33
- package/protos/steam/steammessages_parental.steamclient.proto +262 -262
- package/protos/steam/steammessages_parties.steamclient.proto +75 -75
- package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
- package/protos/steam/steammessages_player.steamclient.proto +915 -915
- package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
- package/protos/steam/steammessages_qms.steamclient.proto +111 -111
- package/protos/steam/steammessages_remoteclient.proto +100 -100
- package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
- package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
- package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
- package/protos/steam/steammessages_remoteplay.proto +975 -975
- package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
- package/protos/steam/steammessages_shader.steamclient.proto +89 -89
- package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
- package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
- package/protos/steam/steammessages_siteserverui.proto +130 -130
- package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
- package/protos/steam/steammessages_store.steamclient.proto +404 -404
- package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
- package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
- package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
- package/protos/steam/steammessages_unified_base.steamclient.proto +45 -45
- package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
- package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
- package/protos/steam/steammessages_vac.steamclient.proto +37 -37
- package/protos/steam/steammessages_video.steamclient.proto +68 -68
- package/protos/steam/steammessages_virtualcontroller.proto +138 -138
- package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
- package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
- package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/steam/webuimessages_achievements.proto +29 -29
- package/protos/steam/webuimessages_base.proto +24 -24
- package/protos/steam/webuimessages_gamenotes.proto +21 -21
- package/protos/steam/webuimessages_gamescope.proto +57 -57
- package/protos/steam/webuimessages_steamengine.proto +41 -41
- package/protos/steam/webuimessages_steamos.proto +114 -114
- package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
- package/protos/steam/webuimessages_systemmanager.proto +17 -17
- package/protos/steam/webuimessages_transport.proto +22 -22
- package/protos/steam/webuimessages_transportvalidation.proto +111 -111
- package/protos/webui/common.proto +4024 -4024
- package/protos/webui/common_base.proto +27 -27
- package/protos/webui/service_accountcart.proto +153 -153
- package/protos/webui/service_accountlinking.proto +27 -27
- package/protos/webui/service_accountprivacy.proto +42 -42
- package/protos/webui/service_accountprivateapps.proto +34 -34
- package/protos/webui/service_auction.proto +97 -97
- package/protos/webui/service_authentication.proto +222 -222
- package/protos/webui/service_authenticationsupport.proto +74 -74
- package/protos/webui/service_broadcast.proto +562 -562
- package/protos/webui/service_chat.proto +11 -11
- package/protos/webui/service_chatroom.proto +810 -810
- package/protos/webui/service_chatusability.proto +107 -107
- package/protos/webui/service_checkout.proto +84 -84
- package/protos/webui/service_clan.proto +41 -41
- package/protos/webui/service_clanchatrooms.proto +25 -25
- package/protos/webui/service_clanfaqs.proto +202 -202
- package/protos/webui/service_clientcomm.proto +151 -151
- package/protos/webui/service_clientmetrics.proto +22 -22
- package/protos/webui/service_cloud.proto +222 -222
- package/protos/webui/service_cloudconfigstore.proto +51 -51
- package/protos/webui/service_cloudgaming.proto +30 -30
- package/protos/webui/service_community.proto +365 -365
- package/protos/webui/service_dailydeal.proto +89 -89
- package/protos/webui/service_econ.proto +134 -134
- package/protos/webui/service_embedded.proto +24 -24
- package/protos/webui/service_experimentservice.proto +6 -6
- package/protos/webui/service_familygroups.proto +355 -355
- package/protos/webui/service_fovasvideo.proto +15 -15
- package/protos/webui/service_friendmessages.proto +133 -133
- package/protos/webui/service_friendslist.proto +70 -70
- package/protos/webui/service_gamenotes.proto +15 -15
- package/protos/webui/service_gamerecording.proto +265 -265
- package/protos/webui/service_gamerecordingclip.proto +85 -85
- package/protos/webui/service_gamerecordingdebug.proto +52 -52
- package/protos/webui/service_helprequestlogs.proto +16 -16
- package/protos/webui/service_loyaltyrewards.proto +252 -252
- package/protos/webui/service_marketingmessages.proto +215 -215
- package/protos/webui/service_mobileapp.proto +18 -18
- package/protos/webui/service_mobileauth.proto +24 -24
- package/protos/webui/service_mobiledevice.proto +26 -26
- package/protos/webui/service_mobileperaccount.proto +31 -31
- package/protos/webui/service_news.proto +110 -110
- package/protos/webui/service_parental.proto +258 -258
- package/protos/webui/service_partnermembershipinvite.proto +34 -34
- package/protos/webui/service_partnerstorebrowse.proto +28 -28
- package/protos/webui/service_phone.proto +51 -51
- package/protos/webui/service_physicalgoods.proto +15 -15
- package/protos/webui/service_player.proto +918 -918
- package/protos/webui/service_promotioneventinvites.proto +109 -109
- package/protos/webui/service_promotionplanning.proto +186 -186
- package/protos/webui/service_promotionstats.proto +23 -23
- package/protos/webui/service_publishedfile.proto +714 -714
- package/protos/webui/service_publishing.proto +200 -200
- package/protos/webui/service_quest.proto +127 -127
- package/protos/webui/service_salefeature.proto +373 -373
- package/protos/webui/service_saleitemrewards.proto +54 -54
- package/protos/webui/service_shoppingcart.proto +152 -152
- package/protos/webui/service_steamawards.proto +76 -76
- package/protos/webui/service_steamcharts.proto +75 -75
- package/protos/webui/service_steamengine.proto +36 -36
- package/protos/webui/service_steamlearn.proto +876 -876
- package/protos/webui/service_steamnotification.proto +73 -73
- package/protos/webui/service_steamtv.proto +495 -495
- package/protos/webui/service_steamvrvoicechat.proto +67 -67
- package/protos/webui/service_steamvrwebrtc.proto +48 -48
- package/protos/webui/service_storagedevicemanager.proto +104 -104
- package/protos/webui/service_store.proto +359 -359
- package/protos/webui/service_storeappsimilarity.proto +76 -76
- package/protos/webui/service_storebrowse.proto +103 -103
- package/protos/webui/service_storemarketing.proto +44 -44
- package/protos/webui/service_storequery.proto +103 -103
- package/protos/webui/service_storesales.proto +87 -87
- package/protos/webui/service_storetopsellers.proto +44 -44
- package/protos/webui/service_systemmanager.proto +11 -11
- package/protos/webui/service_test_transporterror.proto +6 -6
- package/protos/webui/service_transportauth.proto +17 -17
- package/protos/webui/service_transportvalidation.proto +69 -69
- package/protos/webui/service_twofactor.proto +170 -170
- package/protos/webui/service_useraccount.proto +142 -142
- package/protos/webui/service_usergameactivity.proto +34 -34
- package/protos/webui/service_usergamenotes.proto +70 -70
- package/protos/webui/service_usernews.proto +68 -68
- package/protos/webui/service_userreviews.proto +97 -97
- package/protos/webui/service_video.proto +50 -50
- package/protos/webui/service_videoclip.proto +62 -62
- package/protos/webui/service_voicechat.proto +139 -139
- package/protos/webui/service_webrtc.proto +52 -52
- package/remote.js +6784 -6259
- package/utils.js +168 -168
- package/.idea/git_toolbox_blame.xml +0 -6
- package/.idea/git_toolbox_prj.xml +0 -15
package/create_remote_file.js
CHANGED
@@ -1,66 +1,66 @@
|
|
1
|
-
import SteamUser from "./index.js";
|
2
|
-
import _ from "lodash";
|
3
|
-
|
4
|
-
(async function () {
|
5
|
-
const xx = SteamUser;
|
6
|
-
|
7
|
-
let json = "";
|
8
|
-
|
9
|
-
function doWrite(user, is_static) {
|
10
|
-
for (const methodName of Object.getOwnPropertyNames(user)) {
|
11
|
-
if (methodName === "constructor" || methodName === "length" || methodName === "name" || methodName === "prototype" || methodName === "RequestXML_TooManyRequests" || methodName === "MAX_RETRY") {
|
12
|
-
continue;
|
13
|
-
}
|
14
|
-
const fnString = user[methodName].toString().trim();
|
15
|
-
const async = "async";
|
16
|
-
// const async = fnString.startsWith("async") ? "async" : "";
|
17
|
-
let params = fnString.split("(")[1].split(")")[0];
|
18
|
-
const paramsList = params.split(",");
|
19
|
-
for (let i = 0; i < paramsList.length; i++) {
|
20
|
-
if (paramsList[i].includes("=")) {
|
21
|
-
paramsList[i] = paramsList[i].split("=")[0].trim();
|
22
|
-
}
|
23
|
-
}
|
24
|
-
params = paramsList.join(", ").trim();
|
25
|
-
if (params.startsWith("{") && !params.endsWith("}")) {
|
26
|
-
params = `${params}}`;
|
27
|
-
}
|
28
|
-
|
29
|
-
json += `${`
|
30
|
-
${is_static ? "static " : ""} ${async} ${methodName}(${params}){
|
31
|
-
const __params = [${params}];
|
32
|
-
if(__params.length === 1 && __params[0] === undefined){
|
33
|
-
__params.length = 0
|
34
|
-
}
|
35
|
-
let __cookies = this._cookies;
|
36
|
-
if (__cookies) {
|
37
|
-
if (!Array.isArray(__cookies)) {
|
38
|
-
__cookies = [__cookies];
|
39
|
-
}
|
40
|
-
__cookies = __cookies.map(function (cookie) {
|
41
|
-
return cookie.toString();
|
42
|
-
});
|
43
|
-
}
|
44
|
-
|
45
|
-
try {
|
46
|
-
const result = (
|
47
|
-
await axios.post(getAppURL(), {
|
48
|
-
method: "${methodName}",
|
49
|
-
params: __params,
|
50
|
-
cookies: __cookies,
|
51
|
-
is_static: ${!!is_static}
|
52
|
-
})
|
53
|
-
).data?.result;
|
54
|
-
return result
|
55
|
-
} catch (e) {
|
56
|
-
/* empty */
|
57
|
-
}
|
58
|
-
}`.trim()}\n`;
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
doWrite(SteamUser.prototype, false);
|
63
|
-
doWrite(SteamUser, true);
|
64
|
-
|
65
|
-
console.log("");
|
66
|
-
})();
|
1
|
+
import SteamUser from "./index.js";
|
2
|
+
import _ from "lodash";
|
3
|
+
|
4
|
+
(async function () {
|
5
|
+
const xx = SteamUser;
|
6
|
+
|
7
|
+
let json = "";
|
8
|
+
|
9
|
+
function doWrite(user, is_static) {
|
10
|
+
for (const methodName of Object.getOwnPropertyNames(user)) {
|
11
|
+
if (methodName === "constructor" || methodName === "length" || methodName === "name" || methodName === "prototype" || methodName === "RequestXML_TooManyRequests" || methodName === "MAX_RETRY") {
|
12
|
+
continue;
|
13
|
+
}
|
14
|
+
const fnString = user[methodName].toString().trim();
|
15
|
+
const async = "async";
|
16
|
+
// const async = fnString.startsWith("async") ? "async" : "";
|
17
|
+
let params = fnString.split("(")[1].split(")")[0];
|
18
|
+
const paramsList = params.split(",");
|
19
|
+
for (let i = 0; i < paramsList.length; i++) {
|
20
|
+
if (paramsList[i].includes("=")) {
|
21
|
+
paramsList[i] = paramsList[i].split("=")[0].trim();
|
22
|
+
}
|
23
|
+
}
|
24
|
+
params = paramsList.join(", ").trim();
|
25
|
+
if (params.startsWith("{") && !params.endsWith("}")) {
|
26
|
+
params = `${params}}`;
|
27
|
+
}
|
28
|
+
|
29
|
+
json += `${`
|
30
|
+
${is_static ? "static " : ""} ${async} ${methodName}(${params}){
|
31
|
+
const __params = [${params}];
|
32
|
+
if(__params.length === 1 && __params[0] === undefined){
|
33
|
+
__params.length = 0
|
34
|
+
}
|
35
|
+
let __cookies = this._cookies;
|
36
|
+
if (__cookies) {
|
37
|
+
if (!Array.isArray(__cookies)) {
|
38
|
+
__cookies = [__cookies];
|
39
|
+
}
|
40
|
+
__cookies = __cookies.map(function (cookie) {
|
41
|
+
return cookie.toString();
|
42
|
+
});
|
43
|
+
}
|
44
|
+
|
45
|
+
try {
|
46
|
+
const result = (
|
47
|
+
await axios.post(getAppURL(), {
|
48
|
+
method: "${methodName}",
|
49
|
+
params: __params,
|
50
|
+
cookies: __cookies,
|
51
|
+
is_static: ${!!is_static}
|
52
|
+
})
|
53
|
+
).data?.result;
|
54
|
+
return result
|
55
|
+
} catch (e) {
|
56
|
+
/* empty */
|
57
|
+
}
|
58
|
+
}`.trim()}\n`;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
doWrite(SteamUser.prototype, false);
|
63
|
+
doWrite(SteamUser, true);
|
64
|
+
|
65
|
+
console.log("");
|
66
|
+
})();
|
package/index.js
CHANGED
@@ -2596,6 +2596,48 @@ export default class SteamUser {
|
|
2596
2596
|
return result?.data;
|
2597
2597
|
}
|
2598
2598
|
|
2599
|
+
async removeFriends(steamIds) {
|
2600
|
+
if (!steamIds) {
|
2601
|
+
return;
|
2602
|
+
}
|
2603
|
+
if (!Array.isArray(steamIds)) {
|
2604
|
+
steamIds = [steamIds];
|
2605
|
+
}
|
2606
|
+
|
2607
|
+
const form = new FormData();
|
2608
|
+
for (const steamId of steamIds) {
|
2609
|
+
form.append("steamids[]", steamId);
|
2610
|
+
}
|
2611
|
+
form.append("action", "remove");
|
2612
|
+
form.append("ajax", "1");
|
2613
|
+
form.append("steamid", this.getSteamIdUser());
|
2614
|
+
|
2615
|
+
const result = await this._httpRequestAjax({
|
2616
|
+
url: `profiles/${this.getSteamIdUser()}/friends/action`,
|
2617
|
+
data: form,
|
2618
|
+
headers: {
|
2619
|
+
"content-type": "multipart/form-data",
|
2620
|
+
},
|
2621
|
+
method: "POST",
|
2622
|
+
});
|
2623
|
+
if (result instanceof ResponseError) {
|
2624
|
+
return result;
|
2625
|
+
}
|
2626
|
+
return result?.data;
|
2627
|
+
const resultExample = {
|
2628
|
+
success: 1,
|
2629
|
+
rgCounts: {
|
2630
|
+
cFriendsPending: 89,
|
2631
|
+
cFriendsBlocked: 0,
|
2632
|
+
cFollowing: 0,
|
2633
|
+
cGroupsPending: 0,
|
2634
|
+
cFriends: 5,
|
2635
|
+
cGroups: 0,
|
2636
|
+
success: 1,
|
2637
|
+
},
|
2638
|
+
};
|
2639
|
+
}
|
2640
|
+
|
2599
2641
|
async acceptFriendRequest(steamId) {
|
2600
2642
|
const result = await this._httpMyRequest({
|
2601
2643
|
url: `friends/action`,
|
@@ -4870,11 +4912,12 @@ export default class SteamUser {
|
|
4870
4912
|
|
4871
4913
|
async removePhoneNumber() {
|
4872
4914
|
const result = await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpRemovePhoneNumber?redir=store/account`);
|
4873
|
-
if (result instanceof ResponseError) {
|
4874
|
-
return
|
4915
|
+
if (!result?.data || typeof result.data !== "string" || result instanceof ResponseError) {
|
4916
|
+
return;
|
4875
4917
|
}
|
4918
|
+
|
4876
4919
|
let href = null;
|
4877
|
-
const $ = result.
|
4920
|
+
const $ = cheerio.load(result.data);
|
4878
4921
|
$("a").each(function (index, el) {
|
4879
4922
|
if (!href) {
|
4880
4923
|
const link = $(el).attr("href");
|
@@ -7404,6 +7447,244 @@ export default class SteamUser {
|
|
7404
7447
|
|
7405
7448
|
return result?.data;
|
7406
7449
|
}
|
7450
|
+
|
7451
|
+
async changeEmail(newEmail, getNewEmailOptCodes, accessToken, identitySecret) {
|
7452
|
+
const account = SteamUser.steamID642Miniprofile(this.getSteamIdUser());
|
7453
|
+
|
7454
|
+
const getHelpLink = async () => {
|
7455
|
+
const response = await this._httpRequest("https://help.steampowered.com/en/wizard/HelpChangeEmail?redir=store/account/");
|
7456
|
+
const html = response.data;
|
7457
|
+
const $ = cheerio.load(html);
|
7458
|
+
let buttons = $("a.help_wizard_button");
|
7459
|
+
const helpButton = [...buttons].find((el) => $(el).text().trim() === "Send a confirmation to my Steam Mobile app");
|
7460
|
+
if (!helpButton) return;
|
7461
|
+
return $(helpButton).attr("href");
|
7462
|
+
};
|
7463
|
+
const sendAppConfirmation = async (helpLink) => {
|
7464
|
+
const response = await this._httpRequest(helpLink);
|
7465
|
+
const html = response.data;
|
7466
|
+
if (!html.includes("For security, verify that the code in the box below matches the code we display on the confirmations page.")) {
|
7467
|
+
return;
|
7468
|
+
}
|
7469
|
+
const $ = cheerio.load(html);
|
7470
|
+
const forgot_login_code_form = $("#forgot_login_code_form");
|
7471
|
+
const s = forgot_login_code_form.find('input[name="s"]').val();
|
7472
|
+
const reset = forgot_login_code_form.find('input[name="reset"]').val();
|
7473
|
+
const lost = forgot_login_code_form.find('input[name="lost"]').val();
|
7474
|
+
const method = forgot_login_code_form.find('input[name="method"]').val();
|
7475
|
+
const issueid = forgot_login_code_form.find('input[name="issueid"]').val();
|
7476
|
+
|
7477
|
+
const cleanHtml = html.replaceAll(/\s+/gi, " ");
|
7478
|
+
//do not remove this line
|
7479
|
+
const g_sessionID = cleanHtml.substringAfter("g_sessionID =").trim().substringBefore(";").replaceAll('"', "").trim();
|
7480
|
+
const g_rgDefaultWizardPageParamsStr = cleanHtml.substringAfter("g_rgDefaultWizardPageParams =").trim().substringBefore(";").trim();
|
7481
|
+
const g_rgDefaultWizardPageParams = eval(`() => {return ${g_rgDefaultWizardPageParamsStr};}`)();
|
7482
|
+
delete g_rgDefaultWizardPageParams.sessionid;
|
7483
|
+
|
7484
|
+
return {
|
7485
|
+
issue: {
|
7486
|
+
s,
|
7487
|
+
reset,
|
7488
|
+
lost,
|
7489
|
+
method,
|
7490
|
+
issueid,
|
7491
|
+
},
|
7492
|
+
g_rgDefaultWizardPageParams,
|
7493
|
+
};
|
7494
|
+
};
|
7495
|
+
const sendAccountRecoveryCode = async (issue, g_rgDefaultWizardPageParams, helpLink) => {
|
7496
|
+
const result = await this._httpRequest({
|
7497
|
+
url: "https://help.steampowered.com/en/wizard/AjaxSendAccountRecoveryCode",
|
7498
|
+
method: "POST",
|
7499
|
+
data: {
|
7500
|
+
...g_rgDefaultWizardPageParams,
|
7501
|
+
s: issue.s,
|
7502
|
+
method: issue.method,
|
7503
|
+
link: "",
|
7504
|
+
},
|
7505
|
+
headers: {
|
7506
|
+
"content-type": "application/x-www-form-urlencoded",
|
7507
|
+
"x-requested-with": "XMLHttpRequest",
|
7508
|
+
Referer: helpLink,
|
7509
|
+
},
|
7510
|
+
});
|
7511
|
+
|
7512
|
+
return result?.data?.success === true;
|
7513
|
+
};
|
7514
|
+
const checkAccountRecoveryConfirmation = async (issue, g_rgDefaultWizardPageParams, helpLink) => {
|
7515
|
+
const result = await this._httpRequest({
|
7516
|
+
url: "https://help.steampowered.com/en/wizard/AjaxPollAccountRecoveryConfirmation",
|
7517
|
+
method: "POST",
|
7518
|
+
data: {
|
7519
|
+
...g_rgDefaultWizardPageParams,
|
7520
|
+
s: issue.s,
|
7521
|
+
reset: issue.reset,
|
7522
|
+
lost: issue.lost,
|
7523
|
+
method: issue.method,
|
7524
|
+
issueid: issue.issueid,
|
7525
|
+
},
|
7526
|
+
headers: {
|
7527
|
+
"content-type": "application/x-www-form-urlencoded",
|
7528
|
+
"x-requested-with": "XMLHttpRequest",
|
7529
|
+
Referer: helpLink,
|
7530
|
+
},
|
7531
|
+
});
|
7532
|
+
|
7533
|
+
return result?.data || { continue: true, success: false };
|
7534
|
+
};
|
7535
|
+
const submitNewEmail = async (issue, g_rgDefaultWizardPageParams, newEmail) => {
|
7536
|
+
const result = await this._httpRequest({
|
7537
|
+
url: "https://help.steampowered.com/en/wizard/AjaxAccountRecoveryChangeEmail/",
|
7538
|
+
method: "POST",
|
7539
|
+
data: {
|
7540
|
+
...g_rgDefaultWizardPageParams,
|
7541
|
+
s: issue.s,
|
7542
|
+
account: account,
|
7543
|
+
email: newEmail,
|
7544
|
+
},
|
7545
|
+
headers: {
|
7546
|
+
"content-type": "application/x-www-form-urlencoded",
|
7547
|
+
"x-requested-with": "XMLHttpRequest",
|
7548
|
+
Referer: `https://help.steampowered.com/en/wizard/HelpWithLoginInfoReset/?s=${issue.s}&account=${account}&reset=${issue.reset}&issueid=${issue.issueid}`,
|
7549
|
+
},
|
7550
|
+
});
|
7551
|
+
|
7552
|
+
return result?.data || { hash: "", errorMsg: "", show_confirmation: true };
|
7553
|
+
};
|
7554
|
+
const confirmNewEmail = async (issue, g_rgDefaultWizardPageParams, newEmail, code) => {
|
7555
|
+
const result = await this._httpRequest({
|
7556
|
+
url: "https://help.steampowered.com/en/wizard/AjaxAccountRecoveryConfirmChangeEmail/",
|
7557
|
+
method: "POST",
|
7558
|
+
data: {
|
7559
|
+
...g_rgDefaultWizardPageParams,
|
7560
|
+
s: issue.s,
|
7561
|
+
account: account,
|
7562
|
+
email: newEmail,
|
7563
|
+
email_change_code: code,
|
7564
|
+
},
|
7565
|
+
headers: {
|
7566
|
+
"content-type": "application/x-www-form-urlencoded",
|
7567
|
+
"x-requested-with": "XMLHttpRequest",
|
7568
|
+
Referer: `https://help.steampowered.com/en/wizard/HelpWithLoginInfoReset/?s=${issue.s}&account=${account}&reset=${issue.reset}&issueid=${issue.issueid}`,
|
7569
|
+
},
|
7570
|
+
});
|
7571
|
+
|
7572
|
+
return result?.data || { hash: "", errorMsg: "", show_confirmation: true };
|
7573
|
+
};
|
7574
|
+
const onError = (msg) => ({ error: msg });
|
7575
|
+
|
7576
|
+
const helpLink = await getHelpLink();
|
7577
|
+
if (!helpLink) return onError("Can't get help link");
|
7578
|
+
const issueData = await sendAppConfirmation(helpLink);
|
7579
|
+
if (!issueData) return onError("Can't send app confirmation");
|
7580
|
+
const { issue, g_rgDefaultWizardPageParams } = issueData;
|
7581
|
+
|
7582
|
+
await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpWithLoginInfoEnterCode?s=${issue.s}&account=${account}&reset=${issue.reset}&lost=${issue.lost}&issueid=${issue.issueid}&wizard_ajax=1&gamepad=0`);
|
7583
|
+
|
7584
|
+
const sendResult = await sendAccountRecoveryCode(issue, g_rgDefaultWizardPageParams, helpLink);
|
7585
|
+
if (!sendResult) return onError("Can't send app recovery code");
|
7586
|
+
|
7587
|
+
await sleep(1000);
|
7588
|
+
let confirmations = await this.getConfirmations(accessToken, identitySecret);
|
7589
|
+
if (!confirmations?.confirmations) {
|
7590
|
+
await sleep(2000);
|
7591
|
+
confirmations = await this.getConfirmations(accessToken, identitySecret);
|
7592
|
+
}
|
7593
|
+
if (!confirmations?.confirmations) {
|
7594
|
+
return onError("Can't get app recovery code");
|
7595
|
+
}
|
7596
|
+
for (const confirmation of confirmations?.confirmations) {
|
7597
|
+
await this.acceptConfirmationForObject(accessToken, identitySecret, confirmation.creator);
|
7598
|
+
}
|
7599
|
+
|
7600
|
+
let checkingOk = null;
|
7601
|
+
for (let i = 0; i < 10; i++) {
|
7602
|
+
checkingOk = await checkAccountRecoveryConfirmation(issue, g_rgDefaultWizardPageParams, helpLink);
|
7603
|
+
if (checkingOk.continue) {
|
7604
|
+
await sleep(5000);
|
7605
|
+
} else if (checkingOk.success) {
|
7606
|
+
break;
|
7607
|
+
} else if (checkingOk.error) {
|
7608
|
+
break;
|
7609
|
+
} else {
|
7610
|
+
break;
|
7611
|
+
}
|
7612
|
+
}
|
7613
|
+
if (!checkingOk.success) {
|
7614
|
+
return onError("Can't confirm app recovery code");
|
7615
|
+
}
|
7616
|
+
|
7617
|
+
const resss = await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpWithLoginInfoReset/?s=${issue.s}&account=${account}&reset=${issue.reset}&issueid=${issue.issueid}`);
|
7618
|
+
|
7619
|
+
const submitResult = await submitNewEmail(issue, g_rgDefaultWizardPageParams, newEmail);
|
7620
|
+
if (submitResult.errorMsg) {
|
7621
|
+
console.log(submitResult.errorMsg);
|
7622
|
+
return onError("submitNewEmail Failed: " + submitResult.errorMsg);
|
7623
|
+
}
|
7624
|
+
|
7625
|
+
//confirm code sent to new email
|
7626
|
+
for (let i = 0; i < 5; i++) {
|
7627
|
+
let codes = await getNewEmailOptCodes();
|
7628
|
+
if (codes) {
|
7629
|
+
codes = Array.isArray(codes) ? codes : [codes];
|
7630
|
+
for (const code of codes) {
|
7631
|
+
const confirmResult = await confirmNewEmail(issue, g_rgDefaultWizardPageParams, newEmail, code);
|
7632
|
+
if (confirmResult?.hash?.includes?.("HelpWithLoginInfoComplete")) {
|
7633
|
+
return {
|
7634
|
+
success: true,
|
7635
|
+
};
|
7636
|
+
} else {
|
7637
|
+
await sleep(1000);
|
7638
|
+
}
|
7639
|
+
}
|
7640
|
+
} else {
|
7641
|
+
await sleep(5000);
|
7642
|
+
}
|
7643
|
+
}
|
7644
|
+
|
7645
|
+
return onError("Can't confirm new email code");
|
7646
|
+
}
|
7647
|
+
|
7648
|
+
async sendMessage({ steamId, content, accessToken }) {
|
7649
|
+
if (!accessToken || typeof accessToken !== "string") {
|
7650
|
+
console.error("revokeAccessToken", "invalid accessToken", accessToken);
|
7651
|
+
return;
|
7652
|
+
}
|
7653
|
+
const Protos = helpers([
|
7654
|
+
{
|
7655
|
+
name: "csgo",
|
7656
|
+
protos: loadProfos(`${__dirname}/protos/webui`),
|
7657
|
+
},
|
7658
|
+
]);
|
7659
|
+
const params = {
|
7660
|
+
access_token: accessToken,
|
7661
|
+
origin: "https://store.steampowered.com",
|
7662
|
+
input_protobuf_encoded: protoEncode(Protos.csgo.CFriendMessages_SendMessage_Request, {
|
7663
|
+
steamid: steamId,
|
7664
|
+
message: content,
|
7665
|
+
chat_entry_type: 1,
|
7666
|
+
contains_bbcode: false,
|
7667
|
+
}).toString("base64"),
|
7668
|
+
};
|
7669
|
+
|
7670
|
+
const result = await this._httpRequest({
|
7671
|
+
url: `https://api.steampowered.com/IFriendMessagesService/SendMessage/v1?${Object.keys(params)
|
7672
|
+
.map((k) => `${k}=${encodeURIComponent(params[k])}`)
|
7673
|
+
.join("&")}`,
|
7674
|
+
// responseType: "arraybuffer",
|
7675
|
+
// method: "POST",
|
7676
|
+
});
|
7677
|
+
if (result instanceof ResponseError) {
|
7678
|
+
return result;
|
7679
|
+
}
|
7680
|
+
|
7681
|
+
let response = null;
|
7682
|
+
try {
|
7683
|
+
response = protoDecode(Protos.csgo.CFriendMessages_SendMessage_Response, result.data);
|
7684
|
+
} catch (e) {}
|
7685
|
+
|
7686
|
+
return response;
|
7687
|
+
}
|
7407
7688
|
}
|
7408
7689
|
|
7409
7690
|
SteamUser.MAX_RETRY = 10;
|