{"id":90110,"date":"2024-12-27T17:36:43","date_gmt":"2024-12-27T14:06:43","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/"},"modified":"2024-12-27T17:36:43","modified_gmt":"2024-12-27T14:06:43","slug":"%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/","title":{"rendered":"\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627\u0632 \u0628\u0631\u0627\u06cc \u062c\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627"},"content":{"rendered":"<div data-article-id=\"2177875\" id=\"article-body\">\n<p>\u062f\u0631 \u0686\u0634\u0645 \u0627\u0646\u062f\u0627\u0632 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0645\u0631\u0648\u0632\u06cc\u060c \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u0628\u0627\u0632\u0627\u0631\u06cc\u0627\u0628\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0631\u062f\u06cc\u0627\u0628\u06cc \u00ab\u0628\u0627\u0632\u00bb \u06cc\u0627 \u00ab\u062e\u0648\u0627\u0646\u062f\u0647\u00bb \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u0645\u0627 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0686\u0647 \u0645\u06cc \u0634\u0648\u062f <strong>\u0634\u062e\u0635\u06cc<\/strong> \u0633\u06cc\u0633\u062a\u0645 \u067e\u06cc\u06a9\u0633\u0644 \u0631\u062f\u06cc\u0627\u0628\u06cc &#8211; \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc \u0628\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong>\u062c\u06cc\u0645\u06cc\u0644<\/strong>?<\/p>\n<hr\/>\n<p>\u067e\u06cc\u0648\u0646\u062f GitHub: \u0631\u062f\u06cc\u0627\u0628 \u0646\u0627\u0645\u0647<\/p>\n<p>\u062e\u0648\u062f\u062a \u0631\u0648\u0644 \u06a9\u0646 <strong>Node.js + Express + EJS + SQLite<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647:<\/p>\n<ol>\n<li>\n<strong>1\u00d71 \u067e\u06cc\u06a9\u0633\u0644 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f<\/strong> \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f\u060c\n<\/li>\n<li>\n<strong>\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f<\/strong> (\u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646\u060c IP\u060c \u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631)\u060c\n<\/li>\n<li>\n<strong>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 png \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f<\/strong> \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Gmail\/ \u0633\u0627\u06cc\u0631 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0631\u0627 \u0645\u06cc \u0628\u06cc\u0646\u0646\u062f.<\/li>\n<\/ol>\n<p>\u06cc\u06a9 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0633\u0628\u06a9 \u0648\u0632\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u062f\u0627\u0645 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u0628\u0647 \u0639\u0644\u0627\u0648\u0647 \u06af\u0632\u0627\u0631\u0634 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0628\u0627\u0632. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 100\u066a \u0628\u06cc \u062e\u0637\u0627 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f (\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u0633\u062f\u0648\u062f \u0634\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631 \u06cc\u0627 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f GoogleImageProxy)\u060c \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0648\u0634 \u0633\u0631\u06af\u0631\u0645 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u0622\u0645\u0648\u0632\u0634\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0628\u0627\u0632 \u0627\u0648\u0644\u06cc\u0647 \u062f\u0631 \u0639\u0645\u0644 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u0634\u062e\u0635\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a.<\/p>\n<hr\/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#1_%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\" >1. \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#2_%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85_%D8%A7%D8%B5%D9%84%DB%8C\" >2. \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#21_%D8%B1%D8%AF%DB%8C%D8%A7%D8%A8%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B3%D9%84\" >2.1. \u0631\u062f\u06cc\u0627\u0628\u06cc \u067e\u06cc\u06a9\u0633\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#22_%D9%88%D8%B1%D9%88%D8%AF_%D8%A8%D9%87_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%A8%D8%A7%D8%B2_%D9%85%DB%8C_%D8%B4%D9%88%D8%AF\" >2.2. \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627\u0632 \u0645\u06cc \u0634\u0648\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#23_%D9%BE%D8%B1%D9%88%DA%A9%D8%B3%DB%8C_%D9%87%D8%A7%DB%8C_%D8%AC%DB%8C%D9%85%DB%8C%D9%84_%D9%88_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1\" >2.3. \u067e\u0631\u0648\u06a9\u0633\u06cc \u0647\u0627\u06cc \u062c\u06cc\u0645\u06cc\u0644 \u0648 \u062a\u0635\u0648\u06cc\u0631<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#3_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_Node_%D8%B3%D8%A7%D8%AF%D9%87_%D9%85%D8%A7\" >3. \u0628\u0631\u0646\u0627\u0645\u0647 Node \u0633\u0627\u062f\u0647 \u0645\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#31_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\" >3.1. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#32_appjs_%D9%81%D8%A7%DB%8C%D9%84_%D8%B3%D8%B1%D9%88%D8%B1_%D8%A7%D8%B5%D9%84%DB%8C\" >3.2. app.js (\u0641\u0627\u06cc\u0644 \u0633\u0631\u0648\u0631 \u0627\u0635\u0644\u06cc)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#33_indexejs_%D8%AF%D8%A7%D8%B4%D8%A8%D9%88%D8%B1%D8%AF\" >3.3. index.ejs (\u062f\u0627\u0634\u0628\u0648\u0631\u062f)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#Create_a_New_Tracking_Pixel_%3E_Existing_Pixels_%D9%88%D8%A7%D8%B1%D8%AF_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%B4%D9%88%DB%8C%D8%AF_%D8%A7%D8%B2_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%A7%D8%B1%D8%AC_%D8%B4%D9%88%DB%8C%D8%AF_34_logsejs_%D9%86%D9%85%D8%A7%DB%8C%D8%B4_%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4_%D9%87%D8%A7_%D9%87%D8%B1_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF_%D8%A8%D8%A7%D8%B2_%D8%B2%D9%85%D8%A7%D9%86%D8%8C_IP%D8%8C_%D8%B9%D8%A7%D9%85%D9%84_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1_%D8%B1%D8%A7_%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_%D9%85%DB%8C_%D8%AA%D9%88%D8%A7%D9%86%DB%8C%D9%85_%D8%B2%D9%85%D8%A7%D9%86_%D8%B1%D8%A7_%D9%82%D8%A7%D9%84%D8%A8_%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%DB%8C%D9%85%D8%8C_%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4_%D9%87%D8%A7%DB%8C_%D8%B3%D8%B1%DB%8C%D8%B9_%D8%B1%D8%A7_%D8%A8%D8%A7_%D8%B1%D9%86%DA%AF_%DA%AF%D8%B1%D9%88%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%DB%8C%D9%85_%D9%88_%D8%BA%DB%8C%D8%B1%D9%87_Mail_Tracker_-_Logs_charset%22UTF-8%22_%3E_Logs_for_Created_At_Open_Events_style%22font-style_italic%22%3E_You_may_see_extra_logs_if_bots_for_example_GoogleImageProxy_via_ggphtcom_or_the_email_client_repeatedly_load_the_image_Check_each_logs_timestamp_to_distinguish_real_user_opens_from_proxy_fetches_TimeIPUser-Agent_%D9%88%D8%A7%D8%B1%D8%AF_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%B4%D9%88%DB%8C%D8%AF_%D8%A7%D8%B2_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%A7%D8%B1%D8%AC_%D8%B4%D9%88%DB%8C%D8%AF_4_%D8%AC%D8%A7%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AF%D8%B1_%D8%AC%DB%8C%D9%85%DB%8C%D9%84\" >Create a New Tracking Pixel\n    \n\n     \/&gt;\n\n    Existing Pixels\n    \n    \n  \n\n\n\n\n    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f\n    \n\n    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f\n    \n\n\n\n\n\n  3.4. logs.ejs (\u0646\u0645\u0627\u06cc\u0634 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627) \n\n\u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627\u0632 (\u0632\u0645\u0627\u0646\u060c IP\u060c \u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631) \u0631\u0627 \u0641\u0647\u0631\u0633\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0632\u0645\u0627\u0646 \u0631\u0627 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0631\u0627 \u0628\u0627 \u0631\u0646\u06af \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u063a\u06cc\u0631\u0647:\n\n\n\n  \n    Mail Tracker - Logs\n     charset=\"UTF-8\" \/&gt;\n  \n  \n    Logs for &lt;%= pixel.name %&gt;\n    Created At: &lt;%= pixel.createdAt %&gt;\n\n    Open Events\n     style=\"font-style: italic;\"&gt;\n      You may see extra logs if bots (for example, GoogleImageProxy via ggpht.com) or the email client repeatedly load the image.\n      Check each log\u2019s timestamp to distinguish real user opens from proxy fetches.\n    \n\n    \n      \n        TimeIPUser-Agent\n      \n      \n        &lt;% \/\/ For each log, show the local-time date, IP, userAgent, etc. %&gt;\n      \n    \n  \n\n\n\n\n    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f\n    \n\n    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f\n    \n\n\n\n\n\n\n  4. \u062c\u0627\u0633\u0627\u0632\u06cc \u062f\u0631 \u062c\u06cc\u0645\u06cc\u0644<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#41_URL_Tracker_%D8%B1%D8%A7_%DA%A9%D9%BE%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >4.1. URL Tracker \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#42_%D8%AF%D8%B1%D8%AC_%D8%B9%DA%A9%D8%B3_%D8%A8%D8%B1_%D8%A7%D8%B3%D8%A7%D8%B3_URL\" >4.2. \u062f\u0631\u062c \u0639\u06a9\u0633 \u0628\u0631 \u0627\u0633\u0627\u0633 URL<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#5_%D8%AF%D8%B1%DA%A9_%E2%80%9C%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B6%D8%A7%D9%81%DB%8C%E2%80%9D_%D9%88_%D8%B1%D9%81%D8%AA%D8%A7%D8%B1_%D9%BE%D8%B1%D8%A7%DA%A9%D8%B3%DB%8C\" >5. \u062f\u0631\u06a9 &#8220;\u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc&#8221; \u0648 \u0631\u0641\u062a\u0627\u0631 \u067e\u0631\u0627\u06a9\u0633\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#6_%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%87%D8%A7_%D9%88_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA_%D9%87%D8%A7%DB%8C_%D8%A2%DB%8C%D9%86%D8%AF%D9%87\" >6. \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627 \u0648 \u067e\u06cc\u0634\u0631\u0641\u062a \u0647\u0627\u06cc \u0622\u06cc\u0646\u062f\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#7_%DA%86%D8%B1%D8%A7_%DB%8C%DA%A9_%D8%B1%D8%AF%DB%8C%D8%A7%D8%A8_%D8%B4%D8%AE%D8%B5%DB%8C_%D8%A8%D8%B3%D8%A7%D8%B2%DB%8C%D9%85%D8%9F\" >7. \u0686\u0631\u0627 \u06cc\u06a9 \u0631\u062f\u06cc\u0627\u0628 \u0634\u062e\u0635\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%b1%d8%af%db%8c%d8%a7%d8%a8%db%8c-%d8%a7%db%8c%d9%85%db%8c%d9%84-%d8%a8%d8%a7%d8%b2-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ac%db%8c\/#8_%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >8. \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"1_%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\"><\/span>\n<p>  1. \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>Node.js<\/strong> \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li>\u0645\u0642\u062f\u0627\u0631\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 <strong>\u0627\u06a9\u0633\u067e\u0631\u0633<\/strong> (\u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc).<\/li>\n<li>\u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u0633\u0631\u0647\u0645 \u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0646 <strong>EJS<\/strong> (\u0645\u0648\u062a\u0648\u0631 \u0642\u0627\u0644\u0628) \u0648 <strong>SQLite<\/strong> \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u0646\u06a9\u062a\u0647<\/strong>: \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0641\u0631\u0627\u062f \u062f\u06cc\u06af\u0631 (\u06af\u06cc\u0631\u0646\u062f\u06af\u0627\u0646 \u062e\u0627\u0631\u062c\u06cc) \u067e\u06cc\u06a9\u0633\u0644 \u0634\u0645\u0627\u060c \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u0646\u062f <strong>\u0628\u0627\u06cc\u062f<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0628\u06cc\u0631\u0648\u0646 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0627\u0634\u062f. \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0628\u0631 \u0631\u0648\u06cc \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0645\u0627\u0646\u0646\u062f <strong>\u0631\u0646\u062f\u0631 \u06a9\u0646\u06cc\u062f<\/strong>\u060c <strong>\u0647\u0631\u0648\u06a9\u0648<\/strong>\u060c \u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u062a\u0648\u0646\u0644 (\u0645\u062b\u0644\u0627\u064b <strong>ngrok<\/strong> \u06cc\u0627 <strong>\u062a\u0648\u0646\u0644 \u0645\u062d\u0644\u06cc<\/strong>) \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"2_%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85_%D8%A7%D8%B5%D9%84%DB%8C\"><\/span>\n<p>  2. \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"21_%D8%B1%D8%AF%DB%8C%D8%A7%D8%A8%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B3%D9%84\"><\/span>\n<p>  2.1. \u0631\u062f\u06cc\u0627\u0628\u06cc \u067e\u06cc\u06a9\u0633\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>&#8220;\u067e\u06cc\u06a9\u0633\u0644 \u0631\u062f\u06cc\u0627\u0628\u06cc&#8221; \u0641\u0642\u0637 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0645\u0634\u062a\u0631\u06cc \u06af\u06cc\u0631\u0646\u062f\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f\u060c \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0631\u0627\u06cc \u0622\u0646 PNG 1\u00d71 (\u06cc\u0627 GIF) \u0645\u06cc \u0628\u06cc\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"22_%D9%88%D8%B1%D9%88%D8%AF_%D8%A8%D9%87_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%A8%D8%A7%D8%B2_%D9%85%DB%8C_%D8%B4%D9%88%D8%AF\"><\/span>\n<p>  2.2. \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627\u0632 \u0645\u06cc \u0634\u0648\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0648\u0642\u062a\u06cc \u06a9\u0633\u06cc (\u06cc\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0647\u0627) \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f <code>\/tracker\/<pixel_id>.png<\/pixel_id><\/code>\u060c \u0636\u0628\u0637 \u0645\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0645\u0647\u0631 \u0632\u0645\u0627\u0646<\/strong> (\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f)<\/li>\n<li>\n<strong>\u0622\u062f\u0631\u0633 IP<\/strong>\u060c<\/li>\n<li>\n<strong>\u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631<\/strong> (\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u0634\u0627\u0646 \u062f\u0647\u062f <code>GoogleImageProxy<\/code> \u0628\u0631\u0627\u06cc Gmail\u060c \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 IP \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0642\u0639\u06cc \u067e\u0648\u0634\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"23_%D9%BE%D8%B1%D9%88%DA%A9%D8%B3%DB%8C_%D9%87%D8%A7%DB%8C_%D8%AC%DB%8C%D9%85%DB%8C%D9%84_%D9%88_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1\"><\/span>\n<p>  2.3. \u067e\u0631\u0648\u06a9\u0633\u06cc \u0647\u0627\u06cc \u062c\u06cc\u0645\u06cc\u0644 \u0648 \u062a\u0635\u0648\u06cc\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0635\u0627\u0648\u06cc\u0631 \u067e\u0631\u0627\u06a9\u0633\u06cc Gmail \u0645\u062f\u0631\u0646 (\u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0632 <code>ggpht.com<\/code> \u06cc\u0627 \u0645\u0634\u0627\u0628\u0647). \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc:<\/p>\n<ul>\n<li>\u0634\u0645\u0627 \u0646\u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f <strong>\u06af\u06cc\u0631\u0646\u062f\u0647<\/strong> \u0622\u062f\u0631\u0633 IP \u0648\u0627\u0642\u0639\u06cc<\/li>\n<li>\u062c\u06cc\u0645\u06cc\u0644 \u0627\u063a\u0644\u0628 \u067e\u06cc\u06a9\u0633\u0644 \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f <strong>\u06cc\u06a9 \u0628\u0627\u0631<\/strong> \u0648 \u0622\u0646 \u0631\u0627 \u06a9\u0634 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u0632\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06af\u0632\u0627\u0631\u0634 \u062c\u062f\u06cc\u062f \u0638\u0627\u0647\u0631 \u0646\u0634\u0648\u0646\u062f.<\/li>\n<\/ul>\n<p>\u0628\u0627 \u0648\u062c\u0648\u062f \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u060c \u0647\u0646\u0648\u0632 \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f <strong>\u0627\u06af\u0631\/\u0648\u0642\u062a\u06cc<\/strong> \u062a\u0635\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f &#8211; \u0627\u063a\u0644\u0628 \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0647 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"3_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_Node_%D8%B3%D8%A7%D8%AF%D9%87_%D9%85%D8%A7\"><\/span>\n<p>  3. \u0628\u0631\u0646\u0627\u0645\u0647 Node \u0633\u0627\u062f\u0647 \u0645\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"31_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\"><\/span>\n<p>  3.1. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f (\u0645\u062b\u0644\u0627\u064b <code>mail-tracker<\/code>) \u0633\u067e\u0633:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">cd <\/span>mail-tracker\nnpm init <span class=\"nt\">-y<\/span>\nnpm <span class=\"nb\">install <\/span>express ejs sqlite3 uuid\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0634\u0645\u0627 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u06cc\u06a9 <code>package.json<\/code> \u06a9\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0639\u062f\u06cc:<\/p>\n<ol>\n<li>\n<strong>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong> \u0627\u0644\u0641 <code>public\/images<\/code> \u067e\u0648\u0634\u0647 \u0628\u0627 a <strong>1\u00d71 PNG \u0634\u0641\u0627\u0641<\/strong> \u0646\u0627\u0645 \u0628\u0631\u062f <code>pixel.png<\/code>.<\/li>\n<li>\n<strong>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong> \u062f\u0648 \u0641\u0627\u06cc\u0644 EJS \u062f\u0631 \u06cc\u06a9 <code>views<\/code> \u067e\u0648\u0634\u0647: <code>index.ejs<\/code> (\u062f\u0627\u0634\u0628\u0648\u0631\u062f) \u0648 <code>logs.ejs<\/code> (\u0646\u0645\u0627\u06cc\u0634 \u0633\u06cc\u0627\u0647\u0647\u0647\u0627).<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"32_appjs_%D9%81%D8%A7%DB%8C%D9%84_%D8%B3%D8%B1%D9%88%D8%B1_%D8%A7%D8%B5%D9%84%DB%8C\"><\/span>\n<p>  3.2. <code>app.js<\/code> (\u0641\u0627\u06cc\u0644 \u0633\u0631\u0648\u0631 \u0627\u0635\u0644\u06cc)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u06af\u0632\u06cc\u062f\u0647 \u0627\u06cc \u0633\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0622\u0646:<\/p>\n<ul>\n<li>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0633\u0644 \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f <strong>SQLite<\/strong> (<code>mail-tracker.db<\/code>).<\/li>\n<li>\n<strong>\u062e\u062f\u0645\u062a \u0645\u06cc \u06a9\u0646\u062f<\/strong> \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 (\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 <code>pixel.png<\/code> \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0642\u0627\u0628\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u0633\u062a).<\/li>\n<li>\u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 <code>\/tracker\/:id.png<\/code> \u0645\u0633\u06cc\u0631\u06cc \u06a9\u0647 \u06cc\u06a9 \u0628\u0627\u0632 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc \u0641\u0631\u0633\u062a\u062f <code>pixel.png<\/code>.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">path<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">path<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"na\">v4<\/span><span class=\"p\">:<\/span> <span class=\"nx\">uuidv4<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">uuid<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">sqlite3<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">sqlite3<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">verbose<\/span><span class=\"p\">();<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">view engine<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ejs<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">express<\/span><span class=\"p\">.<\/span><span class=\"nf\">urlencoded<\/span><span class=\"p\">({<\/span> <span class=\"na\">extended<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">}));<\/span>\n\n<span class=\"c1\">\/\/ Serve static files from \/public<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">express<\/span><span class=\"p\">.<\/span><span class=\"nf\">static<\/span><span class=\"p\">(<\/span><span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"nx\">__dirname<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">public<\/span><span class=\"dl\">'<\/span><span class=\"p\">)));<\/span>\n\n<span class=\"c1\">\/\/ Initialize SQLite<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">sqlite3<\/span><span class=\"p\">.<\/span><span class=\"nc\">Database<\/span><span class=\"p\">(<\/span><span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"nx\">__dirname<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">mail-tracker.db<\/span><span class=\"dl\">'<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Create tables if not existing<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Middleware to get baseUrl for EJS<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">((<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">protocol<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">protocol<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">host<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">host<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">locals<\/span><span class=\"p\">.<\/span><span class=\"nx\">baseUrl<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">protocol<\/span><span class=\"p\">}<\/span><span class=\"s2\">:\/\/<\/span><span class=\"p\">${<\/span><span class=\"nx\">host<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\n  <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Dashboard: list all pixels<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ SELECT * FROM pixels ...<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">index<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">pixels<\/span> <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Create pixel<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/create<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pixelId<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">uuidv4<\/span><span class=\"p\">();<\/span>\n  <span class=\"c1\">\/\/ Insert pixel into DB<\/span>\n  <span class=\"c1\">\/\/ redirect to \"https:\/\/dev.to\/\"<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ The tracker route<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/tracker\/:id.png<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Check pixel ID, log open in DB<\/span>\n  <span class=\"c1\">\/\/ Serve the real 'pixel.png'<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">sendFile<\/span><span class=\"p\">(<\/span><span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"nx\">__dirname<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">public<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">images<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">pixel.png<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ View logs<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/logs\/:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ SELECT logs from DB for that pixel<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">logs<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">pixel<\/span><span class=\"p\">,<\/span> <span class=\"nx\">logs<\/span> <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Start server<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">PORT<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">PORT<\/span> <span class=\"o\">||<\/span> <span class=\"mi\">3000<\/span><span class=\"p\">;<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Listening on <\/span><span class=\"p\">${<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">));<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"33_indexejs_%D8%AF%D8%A7%D8%B4%D8%A8%D9%88%D8%B1%D8%AF\"><\/span>\n<p>  3.3. <code>index.ejs<\/code> (\u062f\u0627\u0634\u0628\u0648\u0631\u062f)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0641\u0631\u0645\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u06cc\u06a9\u0633\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0627\u0636\u0627\u0641\u0647 \u062c\u062f\u0648\u0644\u06cc \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0641\u0647\u0631\u0633\u062a \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"cp\"\/>\n<span class=\"nt\"\/>\n  <span class=\"nt\"\/>\n    <span class=\"nt\"><title\/><\/span>Mail Tracker - Dashboard<span class=\"nt\"\/>\n    <span class=\"nt\"><meta\/> <span class=\"na\">charset=<\/span><span class=\"s\">\"UTF-8\"<\/span> <span class=\"nt\">\/&gt;<\/span>\n  <span class=\"nt\"\/>\n  <span class=\"nt\"\/>\n    <span class=\"nt\"\/>Mail Tracker - Dashboard<span class=\"nt\"\/>\n\n    <span class=\"nt\"><h2\/><\/span>Create a New Tracking Pixel<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n\n    <span class=\"nt\"><hr\/> <span class=\"nt\">\/&gt;<\/span>\n\n    <span class=\"nt\"><h2\/><\/span>Existing Pixels<span class=\"nt\"\/>\n    <span class=\"c\"><!-- For each pixel, show tracker URL like: baseUrl\/tracker\/PIXEL_ID.png --><\/span>\n    <span class=\"c\"><!-- Link to logs page to see open events --><\/span>\n  <span class=\"nt\"\/>\n<span class=\"nt\"\/>\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3>\n<p>  3.4. <code>logs.ejs<\/code> (\u0646\u0645\u0627\u06cc\u0634 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627)<br \/>\n<\/h3>\n<p>\u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627\u0632 (\u0632\u0645\u0627\u0646\u060c IP\u060c \u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631) \u0631\u0627 \u0641\u0647\u0631\u0633\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0632\u0645\u0627\u0646 \u0631\u0627 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0631\u0627 \u0628\u0627 \u0631\u0646\u06af \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u063a\u06cc\u0631\u0647:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"cp\"\/>\n<span class=\"nt\"\/>\n  <span class=\"nt\"\/>\n    <span class=\"nt\"><title\/><\/span>Mail Tracker - Logs<span class=\"nt\"\/>\n    <span class=\"nt\"><meta\/> <span class=\"na\">charset=<\/span><span class=\"s\">\"UTF-8\"<\/span> <span class=\"nt\">\/&gt;<\/span>\n  <span class=\"nt\"\/>\n  <span class=\"nt\"\/>\n    <span class=\"nt\"\/>Logs for <span class=\"nt\">&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">pixel.name<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\"\/>Created At: <span class=\"nt\">&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">pixel.createdAt<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n\n    <span class=\"nt\"><h2\/><\/span>Open Events<span class=\"nt\"\/>\n    <span class=\"nt\"><p> <span class=\"na\">style=<\/span><span class=\"s\">\"font-style: italic;\"<\/span><span class=\"nt\">&gt;<\/span>\n      You may see extra logs if bots (for example, GoogleImageProxy via ggpht.com) or the email client repeatedly load the image.\n      Check each log\u2019s timestamp to distinguish real user opens from proxy fetches.\n    <span class=\"nt\"\/><\/p><\/span>\n\n    <span class=\"nt\"><table>\n      <span class=\"nt\"><thead>\n        <span class=\"nt\"><tr><th>Time<span class=\"nt\"\/><\/th><th>IP<span class=\"nt\"\/><\/th><th>User-Agent<span class=\"nt\"\/><\/th><\/tr><\/span>\n      <span class=\"nt\"\/><\/thead><\/span>\n      <span class=\"nt\"><tbody>\n        <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">\/\/<\/span> <span class=\"na\">For<\/span> <span class=\"na\">each<\/span> <span class=\"na\">log<\/span><span class=\"err\">,<\/span> <span class=\"na\">show<\/span> <span class=\"na\">the<\/span> <span class=\"na\">local-time<\/span> <span class=\"na\">date<\/span><span class=\"err\">,<\/span> <span class=\"na\">IP<\/span><span class=\"err\">,<\/span> <span class=\"na\">userAgent<\/span><span class=\"err\">,<\/span> <span class=\"na\">etc.<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n      <span class=\"nt\"\/><\/tbody><\/span>\n    <span class=\"nt\"\/><\/table><\/span>\n  <span class=\"nt\"\/>\n<span class=\"nt\"\/>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<h2>\n<p>  4. \u062c\u0627\u0633\u0627\u0632\u06cc \u062f\u0631 \u062c\u06cc\u0645\u06cc\u0644<br \/>\n<\/h2>\n<h3><span class=\"ez-toc-section\" id=\"41_URL_Tracker_%D8%B1%D8%A7_%DA%A9%D9%BE%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  4.1. URL Tracker \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0639\u0645\u0648\u0645\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u067e\u06cc\u06a9\u0633\u0644 \u0634\u0645\u0627 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 URL \u0645\u0627\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>https:\/\/myapp.example.com\/tracker\/1234abcd-....png\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u0627\u06af\u0631 \u0627\u0632 \u06cc\u06a9 \u062a\u0648\u0646\u0644 \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>https:\/\/random.loca.lt\/tracker\/1234abcd-....png\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"42_%D8%AF%D8%B1%D8%AC_%D8%B9%DA%A9%D8%B3_%D8%A8%D8%B1_%D8%A7%D8%B3%D8%A7%D8%B3_URL\"><\/span>\n<p>  4.2. \u062f\u0631\u062c \u0639\u06a9\u0633 \u0628\u0631 \u0627\u0633\u0627\u0633 URL<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\n<strong>\u0646\u0648\u0634\u062a\u0646<\/strong> \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631 \u062c\u06cc\u0645\u06cc\u0644\n<\/li>\n<li>\u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u062f\u0631\u062c \u0639\u06a9\u0633<\/strong> \u2192 <strong>\u0622\u062f\u0631\u0633 \u0648\u0628 (URL)<\/strong>.\n<\/li>\n<li>\u0686\u0633\u0628\u0627\u0646\u062f\u0646 <strong>URL \u0631\u062f\u06cc\u0627\u0628<\/strong>.\n<\/li>\n<li>\u0627\u06af\u0631 Gmail \u0628\u06af\u0648\u06cc\u062f \u00ab\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u06cc\u0627 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645\u00bb\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631\u062c \u0648 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.\n<\/li>\n<li>\u0648\u0642\u062a\u06cc \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f (\u0648 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f)\u060c Gmail \u0622\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f (\u06cc\u0627 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646) \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0636\u0628\u0637 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n<\/ol>\n<blockquote>\n<p><strong>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/strong>: \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Gmail \u062a\u0635\u0627\u0648\u06cc\u0631 \u067e\u0631\u0627\u06a9\u0633\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Google (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c <code>GoogleImageProxy\/ggpht.com<\/code>). \u0634\u0645\u0627 \u0622\u06cc \u067e\u06cc \u06af\u06cc\u0631\u0646\u062f\u0647 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f. \u0627\u0645\u0627 \u0634\u0645\u0627 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f <strong>\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc<\/strong> \u067e\u06cc\u06a9\u0633\u0644 \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f &#8211; \u0627\u063a\u0644\u0628 \u0628\u0627 \u0628\u0627\u0632 \u0628\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"5_%D8%AF%D8%B1%DA%A9_%E2%80%9C%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B6%D8%A7%D9%81%DB%8C%E2%80%9D_%D9%88_%D8%B1%D9%81%D8%AA%D8%A7%D8%B1_%D9%BE%D8%B1%D8%A7%DA%A9%D8%B3%DB%8C\"><\/span>\n<p>  5. \u062f\u0631\u06a9 &#8220;\u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc&#8221; \u0648 \u0631\u0641\u062a\u0627\u0631 \u067e\u0631\u0627\u06a9\u0633\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u0645\u062a\u0639\u062f\u062f<\/strong>: \u0627\u06af\u0631 Gmail \u06cc\u0627 \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 \u062f\u06cc\u06af\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632\u062e\u0648\u0627\u0646\u06cc \u06cc\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u062f\u060c \u06cc\u0627 \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u06a9\u0646\u062f\u060c \u0686\u0646\u062f\u06cc\u0646 \u0648\u0631\u0648\u062f\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f. \u0628\u0631\u062e\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u062f\u0627\u062e\u0644 \u0628\u0627\u0634\u0646\u062f <strong>\u062b\u0627\u0646\u06cc\u0647<\/strong> \u0627\u0632 \u06cc\u06a9\u062f\u06cc\u06af\u0631\u060c \u062a\u0648\u0633\u0637 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u06cc\u0627 \u0641\u06cc\u0644\u062a\u0631\u0647\u0627\u06cc \u0647\u0631\u0632\u0646\u0627\u0645\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\n<\/li>\n<li>\n<strong>\u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631<\/strong>: \u0634\u0627\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc <code>GoogleImageProxy<\/code> \u0628\u0647 \u062c\u0627\u06cc \u06cc\u06a9 \u0639\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0642\u0639\u06cc \u06cc\u06a9 \u0645\u0631\u0648\u0631\u06af\u0631. \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062c\u06cc\u0645\u06cc\u0644 \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a. \u0633\u0627\u06cc\u0631 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646\u060c \u0645\u0627\u0646\u0646\u062f Apple Mail \u06cc\u0627 Outlook\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f.\n<\/li>\n<li>\n<strong>IP<\/strong>: \u0628\u0647 \u062f\u0644\u06cc\u0644 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0647\u0627\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u062d\u062f\u0648\u062f\u0647 IP Google \u0631\u0627 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u0646\u0647 IP \u0648\u0627\u0642\u0639\u06cc \u06af\u06cc\u0631\u0646\u062f\u0647. \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631 \u062d\u0641\u0638 \u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc \u0627\u0633\u062a.<\/li>\n<\/ul>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"6_%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%87%D8%A7_%D9%88_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA_%D9%87%D8%A7%DB%8C_%D8%A2%DB%8C%D9%86%D8%AF%D9%87\"><\/span>\n<p>  6. \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627 \u0648 \u067e\u06cc\u0634\u0631\u0641\u062a \u0647\u0627\u06cc \u0622\u06cc\u0646\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\n<strong>\u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631<\/strong>: \u0627\u06af\u0631 \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u06af\u06cc\u0631\u0646\u062f\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0645\u0633\u062f\u0648\u062f \u06a9\u0646\u062f\u060c \u067e\u06cc\u06a9\u0633\u0644 \u0634\u0645\u0627 \u0647\u0631\u06af\u0632 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0646\u0645\u06cc \u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0634\u0645\u0627 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627\u0632 \u0631\u0627 \u0646\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f.\n<\/li>\n<li>\n<strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc<\/strong>: \u062c\u06cc\u0645\u06cc\u0644 \u0645\u062e\u0635\u0648\u0635\u0627\u064b \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u06a9\u0634 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627\u0632 \u0634\u062f\u0646 \u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u06a9\u0646\u062f.\n<\/li>\n<li>\n<strong>\u0628\u062f\u0648\u0646 IP \/ \u0645\u06a9\u0627\u0646<\/strong>: \u0628\u0627 \u067e\u0631\u0627\u06a9\u0633\u06cc \u0647\u0627\u060c \u0622\u06cc \u067e\u06cc \u06cc\u0627 \u0645\u0648\u0642\u0639\u06cc\u062a \u0645\u06a9\u0627\u0646\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0646\u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f.\n<\/li>\n<li>\n<strong>\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f<\/strong>: \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u06cc\u0631\u0646\u062f\u06af\u0627\u0646 \u0641\u0631\u062f\u06cc \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u06a9\u0633\u0644 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0634\u062e\u0635 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0631\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. <code>?user=john@example.com<\/code>.<\/li>\n<\/ol>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"7_%DA%86%D8%B1%D8%A7_%DB%8C%DA%A9_%D8%B1%D8%AF%DB%8C%D8%A7%D8%A8_%D8%B4%D8%AE%D8%B5%DB%8C_%D8%A8%D8%B3%D8%A7%D8%B2%DB%8C%D9%85%D8%9F\"><\/span>\n<p>  7. \u0686\u0631\u0627 \u06cc\u06a9 \u0631\u062f\u06cc\u0627\u0628 \u0634\u062e\u0635\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u0622\u0645\u0648\u0632\u0634\u06cc<\/strong>: \u0628\u0627 \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u062f\u06cc\u0627\u0628\u06cc \u0628\u0627\u0632 \u062f\u0631 \u0632\u06cc\u0631 \u06a9\u0627\u067e\u0648\u062a \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u062f.\n<\/li>\n<li>\n<strong>\u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc<\/strong>: \u0634\u0645\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0647 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0627\u0632\u0627\u0631\u06cc\u0627\u0628\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u062f.\n<\/li>\n<li>\n<strong>\u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc<\/strong>: \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646\/\u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u062f \u06cc\u0627 \u0646\u0647\u060c \u06cc\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u06cc\u06a9\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a.\n<\/li>\n<\/ul>\n<p>(\u0647\u0645\u06cc\u0634\u0647 \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u06cc\u062f <strong>\u0642\u0627\u0646\u0648\u0646\u06cc<\/strong> \u06cc\u0627 <strong>\u0627\u062e\u0644\u0627\u0642\u06cc<\/strong> \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627 \u062f\u0631 \u0645\u0646\u0637\u0642\u0647 \u0634\u0645\u0627 \u0648 \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0645\u062e\u0627\u0637\u0628\u06cc\u0646 \u0634\u0645\u0627.)<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"8_%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  8. \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0628\u0627\u0632 \u062e\u0648\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u0627\u0646\u0628\u06cc \u0633\u0631\u06af\u0631\u0645 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0627\u0634\u062f &#8211; \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 <strong>\u062c\u06cc\u0645\u06cc\u0644<\/strong> \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0634\u0645\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u0622\u0646 \u0631\u0627 \u06a9\u0634\u0641 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f <strong>GoogleImageProxy<\/strong> \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc IP \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0628\u067e\u0648\u0634\u0627\u0646\u062f\u060c \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u062e\u0627\u0645\u0648\u0634 \u0628\u0648\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631\u060c \u0647\u0631 \u0628\u0627\u0632 \u0634\u062f\u0647 \u0636\u0628\u0637 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u0648\u062c\u0648\u062f\u060c \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062e\u0635\u06cc\u060c \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u0645\u0646\u0638\u0645 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0628\u0627\u0632 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a.<\/p>\n<p><strong>\u0645\u0631\u0627\u062d\u0644 \u06a9\u0644\u06cc\u062f\u06cc<\/strong> \u062e\u0644\u0627\u0635\u0647:<\/p>\n<ol>\n<li>\n<strong>\u0633\u0627\u062e\u062a<\/strong> \u06cc\u06a9 \u0633\u0631\u0648\u0631 Node.js + Express.\n<\/li>\n<li>\n<strong>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong> \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\/\u067e\u06cc\u06a9\u0633\u0644 \u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f\n<\/li>\n<li>\n<strong>\u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645<\/strong> \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 <code>\/tracker\/:id.png<\/code>.\n<\/li>\n<li>\n<strong>\u0633\u0631\u0648 \u06a9\u0646\u06cc\u062f<\/strong> \u06cc\u06a9 \u0645\u0634\u0631\u0648\u0639 <code>.png<\/code> \u0641\u0627\u06cc\u0644\n<\/li>\n<li>\n<strong>\u062c\u0627\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/strong> \u067e\u06cc\u06a9\u0633\u0644 \u062f\u0631 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062c\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627.\n<\/li>\n<li>\n<strong>\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<\/strong> \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0628\u0627\u0632 (\u0648 \u0628\u0647 \u062f\u0642\u062a \u062a\u0641\u0633\u06cc\u0631 \u06a9\u0646\u06cc\u062f).<\/li>\n<\/ol>\n<p>\u0647\u0645\u06cc\u0646 &#8211; \u0633\u06cc\u0633\u062a\u0645 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0634\u062e\u0635\u06cc \u0634\u0645\u0627. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0639\u0645\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0642\u062f\u0631\u062f\u0627\u0646\u06cc \u0639\u0645\u06cc\u0642 \u062a\u0631\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0628\u0627\u0632 \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u067e\u0633\u062a\u06cc \u0628\u0632\u0631\u06af \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a \u0648 \u0686\u0631\u0627 \u0628\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<hr\/>\n<p>\u067e\u06cc\u0648\u0646\u062f GitHub: \u0631\u062f\u06cc\u0627\u0628 \u0646\u0627\u0645\u0647<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0686\u0634\u0645 \u0627\u0646\u062f\u0627\u0632 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0645\u0631\u0648\u0632\u06cc\u060c \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u0628\u0627\u0632\u0627\u0631\u06cc\u0627\u0628\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0631\u062f\u06cc\u0627\u0628\u06cc \u00ab\u0628\u0627\u0632\u00bb \u06cc\u0627 \u00ab\u062e\u0648\u0627\u0646\u062f\u0647\u00bb \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u0645\u0627 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0686\u0647 \u0645\u06cc \u0634\u0648\u062f \u0634\u062e\u0635\u06cc \u0633\u06cc\u0633\u062a\u0645 \u067e\u06cc\u06a9\u0633\u0644 \u0631\u062f\u06cc\u0627\u0628\u06cc &#8211; \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc \u0628\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062c\u06cc\u0645\u06cc\u0644? \u067e\u06cc\u0648\u0646\u062f GitHub: \u0631\u062f\u06cc\u0627\u0628 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":90111,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv9zegou7s3578cwm027.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-90110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/90110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=90110"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/90110\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/90111"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=90110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=90110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=90110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}