Puppeteer + Playwright

This commit is contained in:
2024-05-29 16:42:52 +02:00
parent fe9a8e2b20
commit d38817f4c5
22 changed files with 1913 additions and 284 deletions
+103
View File
@@ -0,0 +1,103 @@
{
"cookies": [
{
"name": "locale",
"value": "fr",
"domain": ".drouot.com",
"path": "/",
"expires": -1,
"httpOnly": false,
"secure": false,
"sameSite": "Lax"
},
{
"name": "JSESSIONID",
"value": "CEE9A69D532738CA6F448BC54BD5FA98",
"domain": "drouot.com",
"path": "/",
"expires": -1,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
},
{
"name": "cf_clearance",
"value": "Nw88GFRRH4A.R3IrqBs1WHV3v2j6b72TL4xFNt1qtRY-1716455904-1.0.1.1-YiA2MwdTbDytd5SaxdOm_F7ru5Q5bW.MaPs1FxJrr7YtILq0z0u9a4Lghyt2DIaNM_b_2hbki5IKioTVnUlqkQ",
"domain": ".drouot.com",
"path": "/",
"expires": 1747991903.778234,
"httpOnly": true,
"secure": true,
"sameSite": "None"
},
{
"name": "consentLevel",
"value": "none",
"domain": "drouot.com",
"path": "/",
"expires": 1732353503,
"httpOnly": false,
"secure": false,
"sameSite": "Lax"
},
{
"name": "aws.auth.refresh",
"value": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.ej0FDIw3VwTFabbv_Xrthwn6QRxOrGSlTP8P-hM3xyDmhigcIepCgEUlgjSO-taBevdDgiDNuRZ2ymbsmSHjBTgtPPhBJMlNW1CJMFpf34cnHp8P8fNso7KVZH98CVT8a-klxeNUw8sJbzV76E2pefGPiKahMbgNcct6I4C0lmK60569b1ADgDJUXoZ3ZWLM5h7dmu2_zEwcu3rcJSAZvqLBQBrBhw1ck2tivoMVl0Rp3rRDmYCkbvjYpVxozv_KCBA1pKdm_n1E78T4nlJR12UVZKwGj4TnM3_AiV43J-FUKkj-rDEoPfJrWlZh0J3aV403sDGeO_R7C8zOvMz8qQ.HTEsnaMZSmoB5bMT.CPMenx7Y1fkZnG3xdudDXwto0S9nXhlrviwGAUaEV0PdAiN1JRyWyfd2gfZ9gqDJ6CxBog-kZ45nttrdY2JjS71HgBfrg3RAqRqUyiRd9OLUTtHXgysdf6tXGZYqm2j62uTzq5aYWwr_KUMEYKqH45TrxAEnBGlCaKX5ielLghK6ZA_EWrOK3oJW3aM_-mZKD0vrJd9_iwVAUMKk_hdCF1UFqsuVHXZqXxQ_iOPzyd_t5Ui_2WgVqqLZTteAsFwr_L_TqpoM11AgSH-8a1ad05JwCdeMxyhZnW8Gf172Yt7pVzUFuV491KAxXdsgxCbFIhReYhOqABCsS9fKKbi6VBDtDBrRqGeiHgfOapVMLeg8-Va-_YGa1_4oRbX_zye_HTz3WE-xmBBwt98PVEJp4pWr2lY7wDgisqzLgI8foWm1YVWFD5rypAsJxEu-9-25SVErMVlptRaZ650YFHWNrkEr3oeqzwriIxMEjm92gxgVPQOO0Q5gqj9WcUHrbeq01xr6WBhX84AqGqTpT-kxbSrFBxHFMM3zhPey4ElJ2unc_ppj2r96e3FNjTmhRdhYYz827oewmJZZwhAF2KI8a_MEz6-W18b5ju0teM4lWBWRedq8IMeTFuEZ8-nlkQTiDnsSFXqZNtFVfJGcbKKTX8LCm708DrG5QGvqjycOkXrrnw-OCaUibCWbymJzwYdPD1sLLhitMpgI6pKW8H74K7bIb_v2IeMo3hH9gm2n6SI120EpD7n74UCIGx1fn5CB28neuj-_BegrcZNd6KEs0iPEhNOpHKd7k_G8riKX-ZtKIQcqZ8MtwAvjWVVFELEkpXR2IwfW2jXzBObIvcDYYNVijroFUZ-8oObp0dAIaUFtoByIzw3VOzOc4qbCSyelFC1YyoZJgbNW2ic6ZvL8pdzYTogjI_XHakVLBk8jeRg95SXtz9XzpLyx_ZoTX5LzEh5T897tOePl1NmIptU17IiBuwxFj_nYoVgDYbbGz1ox9vEWdrAE6EpfzhFrxWVMijyfjyauWaixri-harPAbhirrGG7QEeURqv0LCMMy1w3LyaZ9p9saG3DzX0yzrERgXMNvbFi4OYY3Cb0O8bo0kjHVY7a6Yj_qKKpfIKGclRKmndxkLK5A6JJkqy4fSLK-v9RbpWUiTC-_0L2k9lEGiK5rgPhMSRhyI5XYUW1rbB_XEKPU12M5uxER0NvjomXgTUy0yOdbDfpIYb89Bs2BK-SE0MAJSepzC8bsW4CWOnfCWGnuOGQphRfCuxAIkvd-4Lwm-Nyt8-Mmvh5VhQw79v8mx2eZNzk4DyiTDbSQUwdoCoEpgyoQnvnxObYVxXUeixB.LW8iCOUVXGCbeHw2rTF6Uw",
"domain": ".drouot.com",
"path": "/",
"expires": 1718955905.860105,
"httpOnly": false,
"secure": true,
"sameSite": "Lax"
},
{
"name": "aws.auth.id",
"value": "eyJraWQiOiJaTktsNEx3c1NcL0xyYVdwaGVtcHE4OWVLWk05eUtUemtUQW40ZlM2bXFtST0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1ODY0NWVjYS1mNDllLTQ1YTktOWI0ZC1lNTg0M2RhZWNjNWUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tXC9ldS1jZW50cmFsLTFfWE5GWDNIMzE0IiwiY29nbml0bzp1c2VybmFtZSI6IjU4NjQ1ZWNhLWY0OWUtNDVhOS05YjRkLWU1ODQzZGFlY2M1ZSIsIm9yaWdpbl9qdGkiOiI2YjUxMTM2Mi1kYmMwLTQ3MDctYjA0Zi05YTVmNzQyZjM5YjAiLCJhdWQiOiI0amNsZG9ib2YycWJuc3NtN2YxMDdnbGlxOCIsImV2ZW50X2lkIjoiNDAwNGViODItNDg1Mi00OTk2LWFjMjctNWQ1MTBiMmI3NTJmIiwidG9rZW5fdXNlIjoiaWQiLCJhdXRoX3RpbWUiOjE3MTY0NTU5MDUsImV4cCI6MTcxNjQ1OTUwNiwiaWF0IjoxNzE2NDU1OTA2LCJjdXN0b206cGFzc19pZCI6IjczOTAzMCIsImp0aSI6IjZjZjhmYjFlLWU1YTgtNDBkNS04NzkzLTk2YmRjNmZjMDU0ZCIsImVtYWlsIjoianAucmFudUBjb2dpcC5kZSJ9.I6lc4Y-fKSQJ1Vd5Lu41fP6_XuG9yaedk1ZKlXy3iyYV17HVxbypjkdTkgy1vbTU-QdS2gHcp9Ynf90q-PxkMuJZ_IWIU3njhoKE7--U4OkIPf7wfsFKq2rZGcUEyM0DxuedpRYbjN0Xesd6DF8nqWs5WGzy1NZDbXVys3ji0h5Y9H00bX7oypI_2ihFkcpRUYRzv8wywjBYoD8Jc7eOwqzeHNUkbs8L4ON2OnPCNBkJ33HKfw5Prnf4DahiZ9h6Vz0I2CTG4uIjI7yy0PpmDXz81-4JHy9G8NV2rEWTKUvJu1TWsMB5tRH50Ho3TBAqhUafKr1VB9uLTRg3gezsHw",
"domain": ".drouot.com",
"path": "/",
"expires": 1716459506.054849,
"httpOnly": false,
"secure": true,
"sameSite": "Lax"
}
],
"origins": [
{
"origin": "https://auth.drouot.com",
"localStorage": [
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.accessToken",
"value": "eyJraWQiOiJYSTd2ejJDRW9pRVwvTnR0UGNkOEY0NE5QSDhHMzMzclJQRVB3OFFwRlJJRT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1ODY0NWVjYS1mNDllLTQ1YTktOWI0ZC1lNTg0M2RhZWNjNWUiLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb21cL2V1LWNlbnRyYWwtMV9YTkZYM0gzMTQiLCJjbGllbnRfaWQiOiI0amNsZG9ib2YycWJuc3NtN2YxMDdnbGlxOCIsIm9yaWdpbl9qdGkiOiI2YjUxMTM2Mi1kYmMwLTQ3MDctYjA0Zi05YTVmNzQyZjM5YjAiLCJldmVudF9pZCI6IjQwMDRlYjgyLTQ4NTItNDk5Ni1hYzI3LTVkNTEwYjJiNzUyZiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE3MTY0NTU5MDUsImV4cCI6MTcxNjQ1OTUwNiwiaWF0IjoxNzE2NDU1OTA2LCJqdGkiOiJkOGViNmNlNS00ZTE3LTRiZmQtYWVkNy01MjBmNzZlOGU2NGYiLCJ1c2VybmFtZSI6IjU4NjQ1ZWNhLWY0OWUtNDVhOS05YjRkLWU1ODQzZGFlY2M1ZSJ9.ltgmmPsITav_sGRrsc7AJz7GzViEGpWc_0qly3dVkZPZfL_NpDxIEz0_-XaikQd_Al_WYZ_k5yvh3DeDJzM4TiBFVVQDPydBb3IkeEj0x7djK_Yj5JUXM-SxaDIrtCkzXhxrwt_SCa0wkeKoPGfHSDt75-NYo4LXeZ15tntnsox-RoasVEop4HXBejWsfOiBsqptd4N8vCrK67nxiuNHTWZYylUz72iwMxtgwSvMVVNVV3FzU2N-puM8QvHhZQ96tCq0-jwTBVwR-DRdHL7IwbStze3-c53LFxbBmreXKn4aGiQybTEEwpDASeU0-YOl-Hgw4BD9gyOv2ECbINeiGw"
},
{
"name": "persist:root",
"value": "{\"navigation\":\"{\\\"redirUri\\\":\\\"\\\",\\\"initialLocation\\\":\\\"/\\\"}\",\"_persist\":\"{\\\"version\\\":-1,\\\"rehydrated\\\":true}\"}"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.clockDrift",
"value": "-1"
},
{
"name": "amplify-signin-with-hostedUI",
"value": "false"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.LastAuthUser",
"value": "58645eca-f49e-45a9-9b4d-e5843daecc5e"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.userData",
"value": "{\"UserAttributes\":[{\"Name\":\"sub\",\"Value\":\"58645eca-f49e-45a9-9b4d-e5843daecc5e\"},{\"Name\":\"email_verified\",\"Value\":\"true\"},{\"Name\":\"email\",\"Value\":\"jp.ranu@cogip.de\"},{\"Name\":\"custom:pass_id\",\"Value\":\"739030\"}],\"Username\":\"58645eca-f49e-45a9-9b4d-e5843daecc5e\"}"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.idToken",
"value": "eyJraWQiOiJaTktsNEx3c1NcL0xyYVdwaGVtcHE4OWVLWk05eUtUemtUQW40ZlM2bXFtST0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1ODY0NWVjYS1mNDllLTQ1YTktOWI0ZC1lNTg0M2RhZWNjNWUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tXC9ldS1jZW50cmFsLTFfWE5GWDNIMzE0IiwiY29nbml0bzp1c2VybmFtZSI6IjU4NjQ1ZWNhLWY0OWUtNDVhOS05YjRkLWU1ODQzZGFlY2M1ZSIsIm9yaWdpbl9qdGkiOiI2YjUxMTM2Mi1kYmMwLTQ3MDctYjA0Zi05YTVmNzQyZjM5YjAiLCJhdWQiOiI0amNsZG9ib2YycWJuc3NtN2YxMDdnbGlxOCIsImV2ZW50X2lkIjoiNDAwNGViODItNDg1Mi00OTk2LWFjMjctNWQ1MTBiMmI3NTJmIiwidG9rZW5fdXNlIjoiaWQiLCJhdXRoX3RpbWUiOjE3MTY0NTU5MDUsImV4cCI6MTcxNjQ1OTUwNiwiaWF0IjoxNzE2NDU1OTA2LCJjdXN0b206cGFzc19pZCI6IjczOTAzMCIsImp0aSI6ImIwNDEyYTBmLTZiN2UtNDc1YS04NTAyLTU0YmY5ODU5MzkxMiIsImVtYWlsIjoianAucmFudUBjb2dpcC5kZSJ9.Qfnv42vNIezdxohbyA1rF_ebfjeqx-LReTDOsYyWxwXdJC7yceu2P84Chr0DvZ0bo2dVtvgsL4TAV1pwFNjqMr5xSzcFNwDF-MzgBRtRWQ6R5OnHN1IX0zUFP9qZkuhaJMCz2kId84C_1YaXhDKqrK_qcvQ_-W1J11yfEbS4kVVZXf70Ko2eAq4XnTjtnTWURjEHM7KTpAehqoxGG96kmaOz4DQ6BKsGdg8BvuG9W7G9wEoU6pBSPgblnTyVvqYvoOrG_TbK3T0K-a3xyWfeEnqW3omTyN_lWhLInZYCejIqxkgVgqGguZxgB5AV0JC77pyxEKs2DRu642mlsqEDZQ"
},
{
"name": "CognitoIdentityServiceProvider.4jcldobof2qbnssm7f107gliq8.58645eca-f49e-45a9-9b4d-e5843daecc5e.refreshToken",
"value": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.ej0FDIw3VwTFabbv_Xrthwn6QRxOrGSlTP8P-hM3xyDmhigcIepCgEUlgjSO-taBevdDgiDNuRZ2ymbsmSHjBTgtPPhBJMlNW1CJMFpf34cnHp8P8fNso7KVZH98CVT8a-klxeNUw8sJbzV76E2pefGPiKahMbgNcct6I4C0lmK60569b1ADgDJUXoZ3ZWLM5h7dmu2_zEwcu3rcJSAZvqLBQBrBhw1ck2tivoMVl0Rp3rRDmYCkbvjYpVxozv_KCBA1pKdm_n1E78T4nlJR12UVZKwGj4TnM3_AiV43J-FUKkj-rDEoPfJrWlZh0J3aV403sDGeO_R7C8zOvMz8qQ.HTEsnaMZSmoB5bMT.CPMenx7Y1fkZnG3xdudDXwto0S9nXhlrviwGAUaEV0PdAiN1JRyWyfd2gfZ9gqDJ6CxBog-kZ45nttrdY2JjS71HgBfrg3RAqRqUyiRd9OLUTtHXgysdf6tXGZYqm2j62uTzq5aYWwr_KUMEYKqH45TrxAEnBGlCaKX5ielLghK6ZA_EWrOK3oJW3aM_-mZKD0vrJd9_iwVAUMKk_hdCF1UFqsuVHXZqXxQ_iOPzyd_t5Ui_2WgVqqLZTteAsFwr_L_TqpoM11AgSH-8a1ad05JwCdeMxyhZnW8Gf172Yt7pVzUFuV491KAxXdsgxCbFIhReYhOqABCsS9fKKbi6VBDtDBrRqGeiHgfOapVMLeg8-Va-_YGa1_4oRbX_zye_HTz3WE-xmBBwt98PVEJp4pWr2lY7wDgisqzLgI8foWm1YVWFD5rypAsJxEu-9-25SVErMVlptRaZ650YFHWNrkEr3oeqzwriIxMEjm92gxgVPQOO0Q5gqj9WcUHrbeq01xr6WBhX84AqGqTpT-kxbSrFBxHFMM3zhPey4ElJ2unc_ppj2r96e3FNjTmhRdhYYz827oewmJZZwhAF2KI8a_MEz6-W18b5ju0teM4lWBWRedq8IMeTFuEZ8-nlkQTiDnsSFXqZNtFVfJGcbKKTX8LCm708DrG5QGvqjycOkXrrnw-OCaUibCWbymJzwYdPD1sLLhitMpgI6pKW8H74K7bIb_v2IeMo3hH9gm2n6SI120EpD7n74UCIGx1fn5CB28neuj-_BegrcZNd6KEs0iPEhNOpHKd7k_G8riKX-ZtKIQcqZ8MtwAvjWVVFELEkpXR2IwfW2jXzBObIvcDYYNVijroFUZ-8oObp0dAIaUFtoByIzw3VOzOc4qbCSyelFC1YyoZJgbNW2ic6ZvL8pdzYTogjI_XHakVLBk8jeRg95SXtz9XzpLyx_ZoTX5LzEh5T897tOePl1NmIptU17IiBuwxFj_nYoVgDYbbGz1ox9vEWdrAE6EpfzhFrxWVMijyfjyauWaixri-harPAbhirrGG7QEeURqv0LCMMy1w3LyaZ9p9saG3DzX0yzrERgXMNvbFi4OYY3Cb0O8bo0kjHVY7a6Yj_qKKpfIKGclRKmndxkLK5A6JJkqy4fSLK-v9RbpWUiTC-_0L2k9lEGiK5rgPhMSRhyI5XYUW1rbB_XEKPU12M5uxER0NvjomXgTUy0yOdbDfpIYb89Bs2BK-SE0MAJSepzC8bsW4CWOnfCWGnuOGQphRfCuxAIkvd-4Lwm-Nyt8-Mmvh5VhQw79v8mx2eZNzk4DyiTDbSQUwdoCoEpgyoQnvnxObYVxXUeixB.LW8iCOUVXGCbeHw2rTF6Uw"
}
]
}
]
}
+36
View File
@@ -0,0 +1,36 @@
FROM node:slim
# We don't need the standalone Chromium
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
# Install Google Chrome Stable and fonts
# Note: this installs the necessary libs to make the browser work with Puppeteer.
RUN apt-get update && apt-get install gnupg wget -y && \
wget --quiet --output-document=- https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg && \
sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \
apt-get update && \
apt-get install google-chrome-stable -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Setting up the work directory
WORKDIR /agent
#Copying all the files in our project
COPY . .
# Installing dependencies
RUN npm install
#RUN npm ci
# Starting our application
#CMD [ "npm", "run", "start" ]
#ENV DEBUG="puppeteer:*"
CMD [ "npm", "run", "dev" ]
# Exposing server port
EXPOSE 3020
# Expose Debugging port
EXPOSE 9229
+13 -16
View File
@@ -1,4 +1,4 @@
FROM node:slim
FROM node:20-bookworm
# We don't need the standalone Chromium
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
@@ -12,6 +12,9 @@ RUN apt-get update && apt-get install gnupg wget -y && \
apt-get install google-chrome-stable -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Install Playwright
RUN npx -y playwright@1.44.0 install --with-deps
# Setting up the work directory
WORKDIR /agent
@@ -20,22 +23,16 @@ COPY . .
# Installing dependencies
RUN npm install
# Add user so we don't need --no-sandbox.
# same layer as npm install to keep re-chowned files from using up several hundred MBs more space
# RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
# && mkdir -p /home/pptruser/Downloads \
# && chown -R pptruser:pptruser /home/pptruser \
# && chown -R pptruser:pptruser ./node_modules \
# && chown -R pptruser:pptruser ./package.json \
# && chown -R pptruser:pptruser ./package-lock.json
# # Run everything after as non-privileged user.
# USER pptruser
#RUN npm ci
# Starting our application
#CMD [ "npm", "run", "debug-cluster" ]
CMD [ "npm", "run", "start" ]
#CMD [ "npm", "run", "start" ]
#ENV DEBUG="puppeteer:*"
CMD [ "npm", "run", "dev" ]
# Exposing server port
EXPOSE 3020
EXPOSE 3020
# Expose Debugging port
EXPOSE 9229
+9 -2
View File
@@ -53,8 +53,15 @@ exports.sale = asyncHandler(async (req, res, next) => {
console.log("Agent Follow Sale: ", url)
AuctionPlatform.Live(req.browser)
switch(AuctionPlatform._BROWSER_TOOL){
case "puppeteerBrowser":
AuctionPlatform.Live(req.puppeteerBrowser)
break;
case "playwrightBrowser":
AuctionPlatform.Live(req.playwrightBrowser)
break;
}
res.status(200).send({"Following URL": url})
}else{
res.status(400).send("URL not supported")
+7 -1
View File
@@ -5,16 +5,22 @@ var bodyParser = require('body-parser');
app.use(bodyParser.json())
//const puppeteer = require('puppeteer');
//const puppeteerPackage = require('puppeteer/package.json');
const puppeteer = require('puppeteer-extra');
const pluginStealth = require('puppeteer-extra-plugin-stealth');
puppeteer.use(pluginStealth())
const { chromium } = require('playwright');
const puppeteerMiddleware = require('./middleware/puppeteer');
const playwrightMiddleware = require('./middleware/playwright');
(async () => {
app.use(puppeteerMiddleware(puppeteer));
app.use(playwrightMiddleware(chromium));
// main routes
app.use('/internApi/follow', require('./routes/follow'));
app.use('/health', require('./routes/health'));
+12
View File
@@ -0,0 +1,12 @@
module.exports = (chromium) => {
return async (req, res, next) => {
const browser = await chromium.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--disable-dev-shm-usage'],
headless: true
});
req.playwrightBrowser = browser;
next();
}
}
+2 -2
View File
@@ -5,10 +5,10 @@ module.exports = (puppeteer) => {
executablePath: '/usr/bin/google-chrome',
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu'],
ignoreDefaultArgs: ['--disable-extensions'],
headless: 'new'
headless: 'true'
});
req.browser = browser;
req.puppeteerBrowser = browser;
next();
}
}
+284 -117
View File
@@ -9,12 +9,14 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@playwright/test": "^1.44.0",
"body-parser": "^1.20.2",
"express": "^4.19.2",
"express-async-handler": "^1.2.0",
"moment-timezone": "^0.5.45",
"node-fetch": "^2.6.1",
"puppeteer": "^22.6.4",
"protobufjs": "^7.3.0",
"puppeteer": "^22.10.0",
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2"
},
@@ -23,11 +25,11 @@
}
},
"node_modules/@babel/code-frame": {
"version": "7.24.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
"integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
"integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==",
"dependencies": {
"@babel/highlight": "^7.24.2",
"@babel/highlight": "^7.24.6",
"picocolors": "^1.0.0"
},
"engines": {
@@ -35,19 +37,19 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
"integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
"version": "7.24.2",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
"integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
"integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
"@babel/helper-validator-identifier": "^7.24.6",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@@ -56,10 +58,78 @@
"node": ">=6.9.0"
}
},
"node_modules/@playwright/test": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.0.tgz",
"integrity": "sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==",
"dependencies": {
"playwright": "1.44.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=16"
}
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
},
"node_modules/@puppeteer/browsers": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.1.tgz",
"integrity": "sha512-QSXujx4d4ogDamQA8ckkkRieFzDgZEuZuGiey9G7CuDcbnX4iINKWxTPC5Br2AEzY9ICAvcndqgAUFMMKnS/Tw==",
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz",
"integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==",
"dependencies": {
"debug": "4.3.4",
"extract-zip": "2.0.1",
@@ -93,11 +163,36 @@
}
}
},
"node_modules/@puppeteer/browsers/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@puppeteer/browsers/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/@puppeteer/browsers/node_modules/semver": {
"version": "7.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@tootallnate/quickjs-emscripten": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
@@ -117,10 +212,9 @@
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
},
"node_modules/@types/node": {
"version": "20.12.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
"integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
"optional": true,
"version": "20.12.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
"integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -134,12 +228,6 @@
"@types/node": "*"
}
},
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -256,37 +344,46 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/bare-events": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
"integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.3.1.tgz",
"integrity": "sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==",
"optional": true
},
"node_modules/bare-fs": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz",
"integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz",
"integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==",
"optional": true,
"dependencies": {
"bare-events": "^2.0.0",
"bare-path": "^2.0.0",
"streamx": "^2.13.0"
"bare-stream": "^1.0.0"
}
},
"node_modules/bare-os": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz",
"integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz",
"integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==",
"optional": true
},
"node_modules/bare-path": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz",
"integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
"integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
"optional": true,
"dependencies": {
"bare-os": "^2.1.0"
}
},
"node_modules/bare-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz",
"integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==",
"optional": true,
"dependencies": {
"streamx": "^2.16.1"
}
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -359,12 +456,12 @@
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -473,9 +570,9 @@
}
},
"node_modules/chromium-bidi": {
"version": "0.5.17",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.17.tgz",
"integrity": "sha512-BqOuIWUgTPj8ayuBFJUYCCuwIcwjBsb3/614P7tt1bEPJ4i1M0kCdIl0Wi9xhtswBXnfO2bTpTMkHD71H8rJMg==",
"version": "0.5.19",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.19.tgz",
"integrity": "sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==",
"dependencies": {
"mitt": "3.0.1",
"urlpattern-polyfill": "10.0.0",
@@ -659,9 +756,9 @@
}
},
"node_modules/devtools-protocol": {
"version": "0.0.1262051",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1262051.tgz",
"integrity": "sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g=="
"version": "0.0.1286932",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1286932.tgz",
"integrity": "sha512-wu58HMQll9voDjR4NlPyoDEw1syfzaBNHymMMZ/QOXiHRNluOnDgu9hp1yHOKYoMlxCh4lSSiugLITe6Fvu1eA=="
},
"node_modules/ee-first": {
"version": "1.1.1",
@@ -901,9 +998,9 @@
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -1096,6 +1193,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -1327,6 +1425,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -1505,15 +1604,17 @@
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/long": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"engines": {
"node": ">=10"
"node": ">=12"
}
},
"node_modules/media-typer": {
@@ -1657,11 +1758,22 @@
}
},
"node_modules/node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/nodemon": {
@@ -1715,21 +1827,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/nopt": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
"integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
"dev": true,
"dependencies": {
"abbrev": "1"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
"node": "*"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -1872,9 +1969,9 @@
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -1888,6 +1985,47 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/playwright": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.0.tgz",
"integrity": "sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==",
"dependencies": {
"playwright-core": "1.44.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=16"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.0.tgz",
"integrity": "sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=16"
}
},
"node_modules/playwright/node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -1896,6 +2034,29 @@
"node": ">=0.4.0"
}
},
"node_modules/protobufjs": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz",
"integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1942,14 +2103,6 @@
}
}
},
"node_modules/proxy-agent/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"engines": {
"node": ">=12"
}
},
"node_modules/proxy-agent/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -1976,15 +2129,15 @@
}
},
"node_modules/puppeteer": {
"version": "22.6.4",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.6.4.tgz",
"integrity": "sha512-J9hXNwZmuqKDmNMj6kednZH8jzbdX9735NQfQJrq5LRD4nHisAMyW9pCD7glKi+iM7RV9JkesI1MYhdsN+0ZSQ==",
"version": "22.10.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.10.0.tgz",
"integrity": "sha512-ZOkZd6a6t0BdKcWb0wAYHWQqCfdlN1PPnXOmg/XNrbo6gJhYWFX4qCNb6ahSn8TpAqBqLCoD4Q010F7GwOM7mA==",
"hasInstallScript": true,
"dependencies": {
"@puppeteer/browsers": "2.2.1",
"@puppeteer/browsers": "2.2.3",
"cosmiconfig": "9.0.0",
"devtools-protocol": "0.0.1262051",
"puppeteer-core": "22.6.4"
"devtools-protocol": "0.0.1286932",
"puppeteer-core": "22.10.0"
},
"bin": {
"puppeteer": "lib/esm/puppeteer/node/cli.js"
@@ -1994,15 +2147,15 @@
}
},
"node_modules/puppeteer-core": {
"version": "22.6.4",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.6.4.tgz",
"integrity": "sha512-QtfJwPmqQec3EHc6LqbEz03vSiuVAr9bYp0TV87dLoreev6ZevsXdLgOfQgoA3GocrsSe/eUf7NRPQ1lQfsc3w==",
"version": "22.10.0",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.10.0.tgz",
"integrity": "sha512-I54J4Vy4I07UHsgB1QSmuFoF7KNQjJWcvFBPhtY+ezMdBfwgGDr8dzYrJa11aPgP9kxIUHjhktcMmmfJkOAtTw==",
"dependencies": {
"@puppeteer/browsers": "2.2.1",
"chromium-bidi": "0.5.17",
"@puppeteer/browsers": "2.2.3",
"chromium-bidi": "0.5.19",
"debug": "4.3.4",
"devtools-protocol": "0.0.1262051",
"ws": "8.16.0"
"devtools-protocol": "0.0.1286932",
"ws": "8.17.0"
},
"engines": {
"node": ">=18"
@@ -2338,6 +2491,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
"dependencies": {
"glob": "^7.1.3"
},
@@ -2373,12 +2527,10 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/semver": {
"version": "7.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
},
@@ -2685,17 +2837,19 @@
}
},
"node_modules/touch": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
"integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
"integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
"dev": true,
"dependencies": {
"nopt": "~1.0.10"
},
"bin": {
"nodetouch": "bin/nodetouch.js"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -2731,8 +2885,7 @@
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"optional": true
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"node_modules/universalify": {
"version": "2.0.1",
@@ -2771,6 +2924,20 @@
"node": ">= 0.8"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -2823,9 +2990,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
"version": "8.16.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
"integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
"version": "8.17.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
"integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
"engines": {
"node": ">=10.0.0"
},
+5 -2
View File
@@ -4,18 +4,21 @@
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon server.js",
"start": "node server.js",
"dev": "nodemon --inspect=0.0.0.0 server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@playwright/test": "^1.44.0",
"body-parser": "^1.20.2",
"express": "^4.19.2",
"express-async-handler": "^1.2.0",
"moment-timezone": "^0.5.45",
"node-fetch": "^2.6.1",
"puppeteer": "^22.6.4",
"protobufjs": "^7.3.0",
"puppeteer": "^22.10.0",
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2"
},
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB