@im_mommmys

Доставать данные из скрипта JavaScript?

У меня есть сайт на wildberries, который делает запрос к серверу, а сервер возвращает ему вот такие данные для подгрузки кое-какой информации
{"catalogSellerHead": "    <div class=\"seller-details\">        <div class=\"seller-details__info-wrap\">            <div class=\"seller-details__logo-wrap\">                <div class=\"seller-details__logo img-plug\">                    <img src=\"//static.wbstatic.net/i/v3/catalog/seller-logo-new.jpg\" width=\"120\" height=\"50\" alt=\"Логотип продавца\" data-link=\"class{merge: sellerExtInfo && (!!sellerExtInfo.logoUrl || sellerExtInfo.hasLogo) toggle='hide'}\">                    <img src=\"//static.wbstatic.net/i/blank.gif\"                         width=\"120\" height=\"50\"                         data-link=\"src{:shopInfo && !!shopInfo.logo_url ? '//images.wbstatic.net' + shopInfo.logo_url : sellerExtInfo && sellerExtInfo.hasLogo ? ('//images.wbstatic.net/shops/' + sellerId + '_logo.jpg'):'//static.wbstatic.net/i/blank.gif'}                         alt{>~trimWord(sellerInfo && (shopInfo && shopInfo.title || sellerInfo.trademark || sellerInfo.fineName), sellerInfo && sellerInfo.orgForms)}\">                </div>            </div>            <div class=\"seller-details__info\">                <div class=\"seller-details__title-wrap\">                    <h2 class=\"seller-details__title\" data-link=\"{>~trimWord(sellerInfo && (shopInfo && shopInfo.title || sellerInfo.trademark || sellerInfo.fineName),  sellerInfo && sellerInfo.orgForms)}\"></h2>                    <span class=\"seller-details__tip-info tip-info\" data-link=\"{tooltip tmplName='suppliersInfoTooltipster' classes='tooltip-supplier' distance=8 tmplData=sellerTooltipInfo pos='center bottom' trigger='click'}\"></span>                </div>                <div class=\"seller-details__param\">                    <span class=\"address-rate-mini address-rate-mini--sm hide\" data-link=\"class{merge: !(sellerExtInfo && sellerExtInfo.rating && !sellerExtInfo.fewVotesText) toggle='hide'}text{:sellerExtInfo && sellerExtInfo.rating}\"></span>                    <span class=\"seller-details__review hide\" data-link=\"class{merge: !sellerExtInfo toggle='hide'}class{merge: sellerExtInfo && sellerExtInfo.fewVotesText toggle='seller-details__review--icon'}html{:(sellerExtInfo && sellerExtInfo.fewVotesText ? sellerExtInfo.fewVotesText : ~nonBreakingSpaceFormatted((sellerExtInfo && sellerExtInfo.feedbacks || '0')) + ' ' +  ~pluralize(sellerExtInfo && sellerExtInfo.feedbacks || 0, 'отзыв', 'отзыва', 'отзывов') + ' на товары')}\"></span>                </div>            </div>        </div>        <div class=\"seller-details__parameter-wrap\" data-link=\"{if sellerExtInfo tmpl='sellerCatalogBlockTmpl'}\"></div>    </div>    <div class=\"seller-head img-plug\" data-link=\"visible{:sellerExtInfo && sellerExtInfo.hasBanner}\" style=\"display: none;\">        <img src=\"//static.wbstatic.net/i/blank.gif\" class=\"seller-head__img\"             width=\"1440\" height=\"158\"             data-link=\"src{:shopInfo && shopInfo.banner ? '//images.wbstatic.net' + shopInfo.banner : sellerExtInfo && sellerExtInfo.hasBanner ? ('//images.wbstatic.net/shops/' + sellerId + '_main_banner.jpg'):'//static.wbstatic.net/i/blank.gif'}             alt{>~trimWord(sellerInfo && (shopInfo && shopInfo.title || sellerInfo.trademark || sellerInfo.fineName), ~orgForms)}\">    </div>",
	"sellerCatalogBlockTmpl": "    {^{include sellerExtInfo}}        <div class=\"seller-details__parameter\">            {{if !hideSellsCount}}                <div class=\"seller-details__parameter-item\">                    <p class=\"seller-details__parameter-value{{if saleItemQuantity > 0}} seller-details__parameter-value--delivered{{else}} seller-details__parameter-value--no-delivered seller-details__parameter-value--gray{{/if}}\">{{if saleItemQuantity > 0}}{{spaceFormatted:saleItemQuantity}}{{else}}Нет проданных{{/if}}</p>                    <p class=\"seller-details__parameter-name\">{{if saleItemQuantity > 0}}{{pluralize: (saleItemQuantity || 0) 'товар продан' 'товара продано' 'товаров продано'}}{{else}}товаров{{/if}}</p>                </div>            {{/if}}            {{if defectPercent != null && saleItemQuantity > 0}}                <div class=\"seller-details__parameter-item\">                    <p class=\"seller-details__parameter-value seller-details__parameter-value--defective\">{{:defectPercent}}%</p>                    <p class=\"seller-details__parameter-name\">товаров с браком</p>                </div>            {{/if}}            {{if registrationDate}}                <div class=\"seller-details__parameter-item\">                    <p class=\"seller-details__parameter-value seller-details__parameter-value--time{{if isNewSupplier}} seller-details__parameter-value--gray{{/if}}\">{{if isNewSupplier}}Новый магазин{{else}}{{humanDate:registrationDate}}{{/if}}</p>                    <p class=\"seller-details__parameter-name\">на Wildberries</p>                </div>            {{/if}}            {{if percent > 0 && saleItemQuantity > 0}}                <div class=\"seller-details__parameter-item\">                    <p class=\"seller-details__parameter-value seller-details__parameter-value--delivery\">{{:percent}}%</p>                    <p class=\"seller-details__parameter-name\">доставок вовремя</p>                </div>            {{/if}}        </div>    {{/include}}",
	"catalogSellerMenu": "    <div class=\"menu-catalog\">        <ul class=\"menu-catalog__list-2\">            {{for catalogMenu}}                {{if children}}                    {{for children}}                        <li>                            <a href=\"{{:node.link}}\">{{:node.name}}</a>                        </li>                    {{/for}}                {{/if}}            {{/for}}        </ul>    </div>",
	"catalogSellerBanners": "    <ul class=\"constructor-seller__banners constructor-seller__banners--{{:getMixedContainerClass(templateType)}}\">        {{for mixedBlockItems}}            {{if itemType == 1}}                <li class=\"constructor-seller__banner\">                    {{singleBanner banner=banner bannerIndex=#getIndex() analiticsCode=''/}}                </li>            {{/if}}        {{/for}}    </ul>",
	"catalogSellersPreview": "    {{for brandPreviews ~templateType=templateData.templateType}}        {^{brandConstructorPreview title=title url=url xfilters=xfilters xpath=xpath xquery=xquery targetUrl='' brandId=0 recent=false /}}    {{/for}}"}

Я анализируя какое-то время, понял что к этому причастен JavaScript. Начал перебирать все файлы, которые подключаются к странице и в одной из них нашел сходства sellerExtInfo и подобные. Вот код этого JS файла
https://static-basket-01.wb.ru/vol0/j/spa/modules/catalog_v2/sellerCatalog/catalogSellerBlocks.min.76647aeaee82f744.js

Модераторы, прошу, не убирайте ссылку, весь код не влез просто-напросто в лимит 10 тыс. символов.

Итак, мне нужно обращаться совсем из другого языка к этому файлу и доставать информацию, соответственно передавать в него наверное айди продавца и получать информацию. Можете подсказать, пожалуйста, как это сделать, я пытался писать какие-то наброски и искать в интернете, но поиск не дает результатов.
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Похоже, вы смогли найти нужный запрос в devtools.
Щёлкните по нему пкм, сохранить запрос как curl, и попробуйте получить эти данные через curl.

Если получится, то вот вам решение. Curl для большинства языков есть в виде библиотеки, а даже если для вашего "совсем другого" нету - можно вызывать внешний бинарник.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы