This commit is contained in:
SillyLossy
2023-04-16 01:33:22 +03:00
parent 9378c8811e
commit a788acdf4b
3 changed files with 93 additions and 76 deletions

View File

@@ -33,8 +33,13 @@ const cached_bots = {};
const logger = console; const logger = console;
const user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0"; const user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36";
function unscrambleFormkey(c, code) {
var e;
eval(code);
return e.join('');
}
function queryScrambler() { function queryScrambler() {
function a(e, t) { function a(e, t) {
@@ -284,10 +289,13 @@ class Client {
const r = await request_with_retries(() => this.session.get(this.home_url)); const r = await request_with_retries(() => this.session.get(this.home_url));
const jsonRegex = /<script id="__NEXT_DATA__" type="application\/json">(.+?)<\/script>/; const jsonRegex = /<script id="__NEXT_DATA__" type="application\/json">(.+?)<\/script>/;
const formKeyRegex = /var c="(.+?)",(.+?),window./;
const jsonText = jsonRegex.exec(r.data)[1]; const jsonText = jsonRegex.exec(r.data)[1];
const key = formKeyRegex.exec(r.data)[1];
const code = formKeyRegex.exec(r.data)[2];
const nextData = JSON.parse(jsonText); const nextData = JSON.parse(jsonText);
this.formkey = nextData.props.formkey; this.formkey = unscrambleFormkey(key, code);
this.viewer = nextData.props.pageProps.payload.viewer; this.viewer = nextData.props.pageProps.payload.viewer;
return nextData; return nextData;
@@ -335,7 +343,6 @@ class Client {
const r = await request_with_retries(() => this.session.get(this.settings_url)); const r = await request_with_retries(() => this.session.get(this.settings_url));
const data = r.data; const data = r.data;
this.formkey = data.formkey;
return data.tchannelData; return data.tchannelData;
} }
@@ -354,6 +361,7 @@ class Client {
const scramblePayload = JSON.stringify(payload); const scramblePayload = JSON.stringify(payload);
const _headers = this.gql_headers; const _headers = this.gql_headers;
_headers['poe-tag-id'] = queryScrambler()(scramblePayload + this.formkey + "WpuLMiXEKKE98j56k"); _headers['poe-tag-id'] = queryScrambler()(scramblePayload + this.formkey + "WpuLMiXEKKE98j56k");
_headers['poe-formkey'] = this.formkey;
const r = await request_with_retries(() => this.session.post(this.gql_url, payload, { headers: this.gql_headers })); const r = await request_with_retries(() => this.session.post(this.gql_url, payload, { headers: this.gql_headers }));
if (!r.data.data) { if (!r.data.data) {
logger.warn(`${queryName} returned an error: ${data.errors[0].message} | Retrying (${i + 1}/20)`); logger.warn(`${queryName} returned an error: ${data.errors[0].message} | Retrying (${i + 1}/20)`);

View File

@@ -1,4 +1,6 @@
subscription MessageDeletedSubscription($chatId: BigInt!) { subscription subscriptions_messageDeleted_Subscription(
$chatId: BigInt!
) {
messageDeleted(chatId: $chatId) { messageDeleted(chatId: $chatId) {
id id
messageId messageId

View File

@@ -62,6 +62,13 @@ fragment SubscriptionMessageLimitExplanation_viewer on Viewer {
fragment WebSubscriptionPaywall_viewer on Viewer { fragment WebSubscriptionPaywall_viewer on Viewer {
...SubscriptionMessageLimitExplanation_viewer ...SubscriptionMessageLimitExplanation_viewer
webSubscriptionPriceInfo {
monthlyPrice
yearlyPrice
yearlyPricePerMonth
yearlyPercentageSavings
id
}
} }
fragment WebSubscriptionSuccessMessage_viewer on Viewer { fragment WebSubscriptionSuccessMessage_viewer on Viewer {