Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 September 16

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Я подключаю библиотеку сервиса для отправки емайлов в приложении(библиотека идет как npm пакет), запускаю метод отправки у данной библиотеки, передавая в него html-код емайла и адрес куда отправлять. После чего библиотека редактирует одну ссылку(для отслеживания клика) в html-коде и отправляет емайл по заданному адресу.

Мне нужно достать эту модифицированную ссылку, по возможности не редактируя код npm-пакета.

Теперь понятно ли описание? 🙂
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Не знаю, что значит xy problem

Для отправки используется sendgrid, вот код для отправки емайла: https://github.com/sendgrid/sendgrid-nodejs/tree/main/packages/mail#quick-start-hello-email
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Суть в том, что этот npm-пакет sendgrid модифицирует ссылку в html-коде емайла и сразу отправляет емайл, в ответе нет этой ссылки, ну и мне хотелось бы как-то например отслеживать все исходящие запросы из приложения, поймать тот, что будет делать либа и достать из body ссылку, из-за недостатка опыта не знаю, можно ли так сделать.
Ну или буду редактировать код npm пакета.
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
не стесняюсь, просто думаю, что это тот редкий случай, когда код ничего не даст.
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Минуту
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
обычная <a href="url">
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Есть две переменные, в одной емайл адрес куда отправить, в другой html-код емайла, эти данные мы передаем в метод отправки этой библиотеки, все остальное происходит под капотом либы. Поэтому мне кажется, что мой код ничего вам не даст.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Давайте зайдем с другой стороны. Зачем Вам эта ссылка?
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
документация библиотеки изучена, способа как достать модифицированный линк я не нашел.
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Ссылка для отслеживания кликов пользователя в емайле. Например когда пользователь кликает на какую-нибудь ссылку в емайле.
Sendgrid модифицирует ссылку по неизвестному мне алгоритму, например по умолчанию ссылка такая: https://developer.chrome.com/ а после модификации выходит такая: http://ur123456.developer.chrome.com/ls/click?upn=GNQ0Y-2FRud123pJSNJOPFTPfjwJ-2F9X71r7qLU3SBdb4745wVI-3DEtcA_nx1QKxP5K9TFoBZ-2Fz3K-2FiEAlKmIrVx72dFsYBr12fl-2Br8WvWtRge-2B9lHeVXh0HaMja395gHzISC7UDCV1231dOTaWPhiq-2FAFaKGi2qym7shXhIH0Su5b4w4-2FfERisM06r5GHpIuvzvJLmai9qztFocXEBsHeqF-2Fjp-2FeilXXlqngdgvkDDttn9-2FxmOn8zQomq5xL63f8xfuF7ikp123W3PXyGTH2-2BzyQNgEm6Nsxv123MzdkpBfFOpg-3D

Пользователь кликает на её в почтовом клиенте, после чего вначале происходит незаметный переход на сайт sendgrid, а затем на оригинальный урл. Таким образом отслеживается клик.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Так а Вам зачем доставать эту ссылку из тела письма?
SendGrid это же сервис. Он же наверняка дает статистику по кликам по этим ссылкам
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
И почему Вы уверены, что замена ссылок происходит внутри пакета а не на стороне сервиса SendGrid?
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Так ли важно зачем... главное, что мне эта ссылка однозначно нужна. Ну если вам интересно, то в этих емайлах динамические ссылки, и мне нужно знать ссылку для отслеживания, чтобы я смог сделать GET-запрос по ней.
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Может быть оно и так, кстати. Но сути это не меняет, мне хотелось бы услышать советы, как решить эту проблему. Мне на ум приходит вот что: отслеживать все запросы из приложения, и посмотреть, что там отправляет либа. Могу ли я это сделать и как?
источник

AH

Artem Hvozd in NodeUA - JavaScript and Node.js in Ukraine
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Повторю вопрос. Почему Вы думаете, что ссылка заменяется внутри пакета до отправки на API SendGrid?
Замена может происходить после того, как вы отправили body письма на их сервер (и скорее всего так и происходит). В таком случае Вы эту ссылку никак не получите
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
В моем емайле ссылки динамические, емайл интерактивный, я хочу сделать вот что: достать эту модифицированную ссылку, а затем когда пользователь сделает клик по моей динамической ссылке, то сделать GET запрос по урл из модифицированной, чтобы клик записался в статистику sendgrid.

Я прекрасно понимаю для чего служит sendgrid..
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
да, я полностью согласен с вами. Как я понимаю вы мне предлагаете посмотреть код этого npm-пакета, чтобы выяснить, где ссылка то модифицируется. Но мой вопрос, может уже любопытства ради остается: можем мы каким-то образом(каким?) отслеживать все запросы из приложения, что делают разные там левые либы?
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
То есть, Вы хотите следующее:
1. Достать из письма модифицированную ссылку
2. Заменить ее обратно на свою
3. Когда кто-то в письме кликает на вашу ссылку, на сервере отправлять запрос на ссылку от SendGrid, которую достали в (1)

Так?
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
к сожалению не то, то говорится о том как посмотреть статистику по емайлам и предлагается два варианта, или это сделать на сайте в личном кабинете, или через API. Но мне то не статистика нужна.
источник