Предисловие Начнём с того, что ****ить будем не через сайт, а через API, **** будет быстрее и проще. Для начала найдем список всех endpoint-ов Ссылка https://pastebin.com/y5TTiezp Нам будет нужен OAUTH_TOKEN: Скриншот Переходим в private keeper. Запрос Авторизация Ссылка - https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/token Тип запроса - POST Тип контента - application/x-www-form-urlencoded --------------------------------ЗАГОЛОВКИ----------------------------------- Authorization: basic MzQ0NmNkNzI2OTRjNGE0NDg1ZDgxYjc3YWRiYjIxNDE6OTIwOWQ0YTVlMjVhNDU3ZmI5YjA3NDg5ZDMxM2I0MWE= (Токен лаунчера) --------------------------------ЗАГОЛОВКИ----------------------------------- Пост данные - grant_type=password&username=|LOGIN|&password=|PWD|&includePerms=true Гуд - "access_token" |pos>0||RESPONSE| Бед - "errorMessage" : "Sorry the account credentials you are using are invalid"|pos>0||RESPONSE| Блок - "errorCode" : "errors.com.epicgames.account.account_locked"|pos>0||RESPONSE| Тестируем Бед: Гуд: Как мы видим всё работает, но этого мало, сейчас будем парсить покупки. Для начала ищем OAUTH_EXCHANGE. Скриншот Нашли, теперь создаём запрос Покупки: Но перед этим парсим access_token: Парс Парсим от "access_token" : " до ", Запрос Покупки Ссылка - https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/exchange Тип запроса - GET Тело запроса - Authorization: bearer |PARS|[1] В гуде пишем - |pos=0||RESPONSE| Теперь парсим код: Парс От "code" : " до ", Тестируем: Скриншот Все получилось идем дальше. Парсим покупки Ссылка - https://accounts.epicgames.com/exchange?exchangeCode=|PARS|[2]&redirectUrl=https://epicgames.com/site/account Тип запроса - GET В гуде пишем - |pos=0||RESPONSE| Тестим: Скриншот Как видим все работает не забываем включить редиректы. Теперь мы сможем спарсить покупки! Парсим Ссылка - https://www.epicgames.com/account/payment/ajaxGetOrderHistory? --------------------------------ЗАГОЛОВКИ----------------------------------- accept: application/json, text/plain, */* accept-encoding: gzip, deflate, br accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,ko;q=0.6 cookie: cookie: EPIC_EGCOM=1e8jai6sn60fr11uch4hq18t13; EPIC_EGCOM_INSTANCE=eNoBoAZf+ZaXdJl/u/4O3mHkcTUzCsPL3OXawzbvvdE7fFPnnhQt91t9CFrvEpF7QUScB/xFGnQw8OOgZt2EvYcTj/1omjJyRGSh4cHFpi8He+ZEF+mDfi9uxDRkPUHwdDALDXFgLPqaqhoDmIYUWKmZzv2fQgYu6xPwquAOPF/oY2OrD5bfbesGoDPVdM6PWyxH3Z9DJjST5V1WkOnYgC1Xk7JkG2TlJ8n9BBiuHyDE0u6TVDg+lEzn9nBXuLavyYolknEO69QI6u4mesYofjUpRzwESWHmMlgX+pBmDJ5O0tWE3imQMT/L6r6Cs2tcnWju54p0F6gt+kN/Wmyjl1dtyaxWpmaaiq64W3yjG6QQkc7FBbEYbSK5azd/KZSaUT1r3cuK9SiWuWtIXIjGcI2M5I97ISknpBaby6ICKZyRaLz2kgs5Ji5kv22n28ilc2+yLltol8hw50raXJ7DdOOdQucAZcRevf0cIzQvybcdezHSc1g4u1TiSlIk2QOQABkaBl4e4E+b7b8yCf/jZIXaQ/7pln7Sj3avtkOzAYuI9AkFrHecIkSsSRD/Gg4ksuPk8BNSx9365uFI4Nxk6zKEKyFk1P3tOpC8AJS2Ut9LQZsYAyenDA2CJzB20AnZnNFsZqXs+R2+/h1MK631OQiC6wuw67XNCIaC9UlrVNyRGVZhV9TEhlWB9+xO7ayRYvWI/g9VbVgouRI490Hk420I9GddjjyAR+dtZSVuY4UDgnEmwgPNFnbqpDkCt8/ip1FkORHIFv8Phw+QwPZ22k79VitKFs3u+qHHxEhXDy2zTVmhoeTUXwRr3agKpeHnX8DJXI1f3Idmu32JZim2eiHJ5O8unSsMbGiZGi6OiO7dMY1MFf+W/d69xXkffkVDpvvIGklxtcB+O4HDortlL9TZkcnJFN0hEwtW4MzjcmhJxp3X/6LnjUim3geVARDdSsl75GUfcuGXY7Hsq6SkrNhhBGKibAx9BDM7ZKAoFI6GVw+WjPGnjMasV6/S9Vlw34f1DnUS1sDosqfHloru4T+A3Fkq6+1JZywIrpnyeK8CvRZSzQwn1wWqxI46qKa9oVYwFtwZyJiQfnfMA/XmC/Xzgmu7xos7ODOkE5K0m2Jyl6u//A7dPTEyCsfHCHlboOpnYbfsEQheleEMpZdxPOKSE9mDVv6NaYhD5IGPgGmHe6dlHIDdYnkkMcbmw2g2LfzdGriBCZ8CWLhby/ozqT8wNBn6A7i9D8QsI+9khTZuRSxX+Lh51EScgEDedPasK51gzzEle/TQvnDH5DVBWrup2M8iMDShSX86i9POEHgNh5W1QTgv/cDx+xPjMnDQd+O8ySRlGm5tMirS4+yx0YS0wf9feM09QpeOa9xxCafUCgiWhjP3iLX3JWxv32oZRTcWbtNZTwVJWbNGrF2cdEyzZRvXZuy3HKVljMnNlZ+VmX6U5UTBzg7ZQXzZuA+6nYG6REslV/IJOno7XbA6SSMlJbBamXHo9iMclzcHB7abolzKl280+NqZwvsZopP2bjS3jwyB84D6PaBaiQMUjePGwJD35FFEJ42LstStXqFbnXZJ0HGBettrmitk/VBg9TtA2XEJLERP9Cr7c6M1QAtvtZ1/iZMqETj2EfHqvcpNvnOtiCTmNPg6AVAZch3o+pQ7EY+0IHB7OtKwq7j1cBY51RmftR+14Ify6g5FgwIYfvRgkD0EY4dj089lugwwvwla/fLu78heUlp61jfAzwvXJ1qzSUOP4S3yORuDd4UgN8I67uZfi44VRjDy86T1GHpN9Jr9XfZd1+Fr1+tvQzZ1j8lfym5d8MBJLQkVrnHDZSvGsYPVY1XaEVKfJxYcoxGZIDct48dfG/RdmhqkWeVyBTPvD7Bts64R/3/Dk/y08l/To6go9/xOXi/VBF7OP32JxF38jVwhi9LkuBNm2jwTVqijERg/7iWZyeuUyZFjJXu9perAj9qASX7NgnUr3CFUaKJyUIZfk0Ie0ZuZP2O8Qyjn1WOsMGYPq5EE+k/mq7sa2EjPlRxyQcJFtCghJzMe6pYCUmNxtZ0vOOJOSfhHoZKcgLA7Xbk5Alie9aTpc6VsOJNsvxu8Imo9OJHyTLFnHkzo4R0QL+zfp1VjbOEHzbf2d+QrPhI7ZV4kv5FCCkovNtnT2XiJtuOOzdWVK2MCUw9vxSPp1btoiUhE192Ma+Enbvi4ib5isshS66n17mR9pJQAKO2ZrwgBfV01jQxYJ3vMe9xZfuHxtkgXdWJYF3SFV832AVJk; EPIC_DEVICE=71589afd-9c8d-451d-9055-d7f904296f10; epicCountry=RU; FNVBSESSID=ejgl5knvjjvdehqt5t5bkvmjv8; XSRF-TOKEN=invalid; sailthru_hid=41cf35efc3a76d2a9be6c7e5958cd5945b0863152ddf9c28205ebaccb013b90d5858ffbfc01a3af343dcb638; UTVBSESSID=e6h74mb19npqeiod1h3dplpdrh; EPIC_LOCALE_COOKIE=ru; XSRF-TOKEN=ba169f9c8b344c159d36c518a4e941a2; epicLocale=en_US; productName=epicgames; EPIC_SSO_SESSION=1prnbvuai7v0q1a2xf8ce16au3; EPIC_SSO=1prnbvuai7v0q1a2xf8ce16au3; EPIC_SSO_RM=1prnbvuai7v0q1a2xf8ce16au3; EPIC_BEARER_TOKEN=9d244dfd8aae45b994bfc15f4e75450a; EPIC_STAY_SIGNED_IN=false; AWSELB=81D1478D08CB884C94478EC53063AF39C28B1A7DA98C98B51961234B5B8C255981354DC138C8B3B97EF916ABF9099D8D56397A184B448D7F21D341F17C4E61F385EC919E36; _epicSID=3449320f4b5c4679a5338ce1d2e3344a; csrfToken=yJFEj0doowYeXjrLs5KZVDFy9X81ox2RlNZtVw092Aw= x-requested-with: XMLHttpRequest --------------------------------ЗАГОЛОВКИ----------------------------------- Парсим от "total": до , в ответе Итог: Скриншот Как мы видим отображается количество покупок, а теперь добавим расширенную статистику! Делаем расширенную статистику Создаём две глобальные переменные: Скриншот После чего в последнем запросе где парсим покупки заходим в скрипт бокс: Скриншот Выбираем после выполнения запроса, вставляем скрипт: Скрипт #beginScript |DV|[AccountsWithBuy]=(|EVAL| var Value = |PARS|[3]; function newValue(){ return Value; } newValue(); |EVAL|) #endScript Code #beginScript |DV|[AccountsWithBuy]=(|EVAL| var Value = |PARS|[3]; function newValue(){ return Value; } newValue(); |EVAL|) #endScript Теперь выбираем финальный скрипт бокс Скриншот Вставляем туда - Код #beginScript if(|DV|[AccountsWithBuy]>0){ |DV|[AccountsValue]=(|MATH||DV|[AccountsValue]+1|MATH|) } #endScript Code #beginScript if(|DV|[AccountsWithBuy]>0){ |DV|[AccountsValue]=(|MATH||DV|[AccountsValue]+1|MATH|) } #endScript После чего заходим в расширенную статистику и вводим - |DV|[AccountsValue] Скриншот Как видим всё работает!: Скриншот В статистике ничего нет так как аккаунт без покупок ) Теперь всё работает, а в следующем уроке мы на примере Blizzard.net будем делать проект с динамическими настройками! Готовый проект - Почему такой хайд? Да потому что надо писать самому чтобы что-нибудь запомнить) Всем удачи)
Как я понял, нужно еще куки парсить и вставлять в заголовки все, иначе по заготовленным кукам он будет парсить инфу только с 1 аккаунта, которому принадлежат эти самые куки.