Anonymous
Привлечение данных продукта Homeedepot с использованием не общедоступного API GraphQL [закрыто]
Сообщение
Anonymous » 01 апр 2025, 12:07
Это код, который я использую, я в основном хочу получить цену продукта из разных магазинов, я имею в виду, что хочу построить сканер, чтобы поместить разные идентификаторы магазинов, и он получает цены из всех магазинов для этого конкретного продукта.
Код: Выделить всё
def func1():
import json
import requests
headers = {
"authority": "apionline.homedepot.com",
"method": "POST",
"path": "/federation-gateway/graphql?opname=productClientOnlyProduct",
"scheme": "https",
"accept": "*/*",
"accept-encoding": "gzip, deflate, br, zstd",
"accept-language": "en-US,en;q=0.9,it;q=0.8",
"cache-control": "no-cache",
"content-length": "11172",
"content-type": "application/json",
"cookie": "AMCV_F6421253512D2C100A490D45%40AdobeOrg=MCMID|40920061203262528240348224432635813603; THD_PERSIST=; THD_CACHE_NAV_PERSIST=; thda.u=36d8a384-7ecf-2b06-7734-e936594ed1dd; _px_f394gi7Fvmc43dfg_user_id=ZWY0ZjMzZTAtZmNmZi0xMWVmLWIyOGItMDFiYjNmNDM0OGJh; ajs_anonymous_id=ad6fa4e9-8ac2-4898-afbd-7ef97a530fec; trx=5436161433999891084; QuantumMetricUserID=7c1703a046b1ab870405e8e9559404f1; _gcl_au=1.1.1875298573.1742401829; HD_DC=origin; thda.s=97e6fa64-327a-0fa3-cb73-e1505b186cfb; ads=8920f21205efc84e9aa9883b9619d419; _ga_9H2R4ZXG4J=GS1.1.1742993713.6.0.1742994858.60.0.0; _ga=GA1.1.430429979.1742401819; THD_NR=1; DELIVERY_ZIP=10005; DELIVERY_ZIP_TYPE=USER; forterToken=9657c64609084fdab98e7dc764ca717c_1743082805834_839_UDF43-m4_23ck_; QuantumMetricSessionID=b872f9e0f83cfae1017a1ef71bc5c67d; bm_ss=ab8e18ef4e; AKA_A2=A; bm_s=YAAQfEISAjmpP6aVAQAAC48q2gNzp3343XijFXJGZ95f4bIoasikP8c/6E29JnVXD4edSAniDgBcdbxRLMx2qnX/b7xvrN5bQL7Z/XTL0AGQTtdUAtQQHyHo4HIKCmoh5o/pciPMk57hirtPzyQjTzZLivEtHDzhrKwBLx468HGfGcBRgotEJwa0FxtYl2Tel+ciBeJriJfXp/2r//ikVr+FrazHn5on0EeavQ/D65Yh5lEEmW9S6DADfawIH1Pmh3drvFuSNuPq0ls0M9v+ZM5GciSl121cCxCPhZ6mBSd7zNBeXf8l6zh7ATXKAel8F7mEBPak35HqFSugvMf04MNVZ8q1QzBKgJ9t4MAj4DZQ7pZVU0LPQcCH3B3yxwXZoInTNPYvYc6z2eiy5qLQVvv2u4dmPwRBX9aPZq+l9GiEFaB3PPyB1SJRvxrzjm27aaPwM7QiM1RNOEPAaP4=; bm_so=1F1067047E2CD34B07451C6D2F7DCCB662541E5C7339C97A32796F97E8B9F12A~YAAQfEISAjqpP6aVAQAAC48q2gN890Y6VKLY3SZDSuyHIcyVdALI3GvDq78imeZ0BBHnBGAfa1x6hfo7ZjGuBvIp0IDXuiUZVmXfSXyaSXAStS2U8uapNyowf4+C3Q72kaB64zkqpESsOGE96Fbk3ByjKG/xKDS1yQwmkoggxVZa9X1pRhsNIfJpl67Fq7U+XWgpOgiqjwkDch8eCiCQd88MQEUTUgQSMOvVW9vlAkfyBRWk4H7Xl8FDb1DpGPdTQ9ctpHOW2ZgU8+CgxHG/oMFB85zDv3VQ3HT3TGFuJgO+APQt6eCu6fajEiXAkKcFbjuhWHQ7thhyFRiRIZbpqWvj9MPcU84Ns3Yq9vThNmFOpJWxHKrM5vkRgcKuQxGt3jvtW8pRf9Joq3fFu2XD/7BusQc5NPW3tBaZpJ8AbeiiO2EV7dpglkKdOFVFlosxZWuqgkCKUL34qLgvtgB2MIpy; bm_sz=F36A53604B2EFF3ADD09B85FCA4F1CD1~YAAQfEISAjupP6aVAQAAC48q2hssshKN/w04+LVngizUccL+Fvgur5JnUdtt3K/QQwYJl0Kky7oJg/MbuzIHILRFtKBDY+6Ifzhalk7PelXaYty/AVPywEt0Y6Jy2lmsDjI0lE3AyfbMOqiFiFZkQNcP5p8HBrwkiEXgk3UP1//YDLvoinQk2hb0wSnKe51sNKAnzp3BeMVCwJbtfm8cCzu6qtsIgGpU8QOC+IY7pTeq5cBStRpH3xr5Xw+uKgfk8vVPrc0RyD5WfxFnopwStAMk2JS4rzkUuowWcmwLOybfDGA7kFEj4QUqJ7jPyq3fjtLNBvAYGF6TosrnAnlBUO13rYpC4izMZ27XsWcovSDm1emwK2B2QgIV6Pwgv3iAY3jgFmWFZHEfXFglFBAJ2Ts=~3293753~3422520; _abck=47695A247A6A6CDAACFADDAB4F2983CD~0~YAAQfEISAtWpP6aVAQAAo5Qq2g0xdbthCQ17/vZDIMbVynuUDgB4VmnYvsgEpCxoNvrKb+qWuUIVfqF1F3gDdEV9PVedyacX0+02U4sIp2huyDP2TIgD+i/FmFPvBzUbH2Yxp7WeRVD5maTraN4rjBwmfBp7ZUyfnVUZsszFImoHv6ZXrlqSq2gh+YLiUb8DKhkig9VToH40tksuEkn068kPd63cxtCg0aSiUe85AFwcLPQ89cE6YpOTPb0Wiame2DUFHcSVingSFK38V47xJ9IzKqNoAYRagrvzylhO4+TysVV/Z7jgQrWVEDZvwQM/74iPqgj+EDPzBNZzv4z5rbFxwax3K5OTy3+aQ29+u0y+JfIjEUHnuqdCLr09LZfvRbzZ3P/NTSZq2jIwfOBzoq4LRZHHgmCPMbleENxWYJMlORSi6D5DpruQqtDRzpYBZ2/FWcl/qQDlf23Ga+qrPdWgas6NadY/OToVbRNYvfXtDYyh+loSb6E6mWrug4HTEMPTFnlIPYXuY9Twbr4yCNKI9ZQop/MlOHInKAf2D7Y0f3NXwOS1LQDrjaDpyaE8GGrSOEhQ/UNbdyHYAUK6Fhb2XRDoTZn2ruUkcZRaqsxNUeihkQr+rMmG64EKyPHKJI7+8udfJfcBzu+132Sk0X19lM4TczsIXXxQCyH36GWrzfl4Sys462lPa7Tt65J7ZM2flTHXs5ZYr3ixS1PHXw==~-1~-1~-1; kndctr_F6421253512D2C100A490D45_AdobeOrg_cluster=va6; kndctr_F6421253512D2C100A490D45_AdobeOrg_identity=CiY0MDkyMDA2MTIwMzI2MjUyODI0MDM0ODIyNDQzMjYzNTgxMzYwM1ISCPnxiN3XMhABGAEqA09SMjAA8AHRtKrR3TI%3D; THD_SESSION=; THD_CACHE_NAV_SESSION=; ak_bmsc=83582C9096925CD2B42AF5B52AB0EB33~000000000000000000000000000000~YAAQbEISAjoRYa6VAQAAV6Mq2hugrd4XVJYjPGpLHYxVlZ1W+HQIdHrjiQ8byArLksPJVtYM4uhCnCFtcuKJkAn5SwVK8MPccr/gJ2s+2q7jFKljby2y725UguSmkH5pTyO42N0RaDsBttJBUqEgn/TB6xgwdsvmHpGMFUM9bb6tfVE96F/fPXG1zVLtxULOUbhzYB/QkVbOjv9F1Ixelm2GcQgHbMcSr+sa4PC4dOk5gsKAHAEzMKb48SGGkffwutMyN553OQEWrLtyfeRgYX6UlFt50Blg6dbZb/tPt4MEZ3LAZ2GikOzFFU0yF2R5BGazxVyKNiqbpa3Ye1zGGjDjTVbkMT3l58LacvX02jQvKM5ULD+ktJx1jnDpkJ/UR9iudHapQa0J0aRHaC93Lbw+lWAvQkRs2sTw8xuDw1Dmv5JMU+BejfoODka5JXWhz4IeLm1pYonArFPgihc8wQ==; THD_LOCALIZER=%257B%2522WORKFLOW%2522%253A%2522LOCALIZED_BY_STORE%2522%252C%2522THD_FORCE_LOC%2522%253A%25220%2522%252C%2522THD_INTERNAL%2522%253A%25220%2522%252C%2522THD_LOCSTORE%2522%253A%25224705%252BSouthcenter%2520-%2520Tukwila%252C%2520WA%252B%2522%252C%2522THD_STRFINDERZIP%2522%253A%252298188%2522%252C%2522THD_STORE_HOURS%2522%253A%25221%253B7%253A00-20%253A00%253B2%253B6%253A00-22%253A00%253B3%253B6%253A00-22%253A00%253B4%253B6%253A00-22%253A00%253B5%253B6%253A00-22%253A00%253B6%253B6%253A00-22%253A00%253B7%253B6%253A00-22%253A00%2522%252C%2522THD_STORE_HOURS_EXPIRY%2522%253A1743125586%257D", # Truncated for brevity
"origin": "https://www.homedepot.com",
"pragma": "no-cache",
"priority": "u=1, i",
"referer": "https://www.homedepot.com/",
"sec-ch-ua": '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
"x-api-cookies": '{"x-user-id":"36d8a384-7ecf-2b06-7734-e936594ed1dd"}',
"x-cloud-trace-context": "6650a67f833b4d7585f82af783f3a543/2;o=1",
"x-current-url": "/p/Latex-ite-4-75-Gal-Ultra-Shield-Driveway-Filler-Sealant-70691/100508445",
"x-debug": "false",
"x-experience-name": "fusion-gm-pip-desktop",
"x-hd-dc": "origin",
"x-parent-trace-id": "f9c9e27a461544e6218e9ad7f5e9222b/13316437098234969620",
"x-thd-customer-token": ""
}
url = "https://apionline.homedepot.com/federation-gateway/graphql?opname=productClientOnlyProduct"
params={
"opname":"productClientOnlyProduct"
}
payload={
"operationName": "productClientOnlyProduct",
"query": "query productClientOnlyProduct($itemId: String!, $dataSource: String, $loyaltyMembershipInput: LoyaltyMembershipInput, $skipSpecificationGroup: Boolean = false, $storeId: String, $isBrandPricingPolicyCompliant: Boolean, $skipFavoriteCount: Boolean = false, $configId: String, $skipPaintDetails: Boolean = true, $zipCode: String, $quantity: Int, $skipInstallServices: Boolean = true, $skipKPF: Boolean = false, $skipSubscribeAndSave: Boolean = false) { product(itemId: $itemId, dataSource: $dataSource, loyaltyMembershipInput: $loyaltyMembershipInput) { itemId dataSources identifiers { canonicalUrl brandName itemId modelNumber productLabel storeSkuNumber upcGtin13 skuClassification specialOrderSku toolRentalSkuNumber rentalCategory rentalSubCategory upc productType isSuperSku parentId omsThdSku sampleId roomVOEnabled __typename } specificationGroup @skip(if: $skipSpecificationGroup) { specifications { specName specValue __typename } specTitle __typename } availabilityType { discontinued status type buyable __typename } details { description collection { url name collectionId __typename } installation { serviceType leadGenUrl __typename } highlights __typename } media { images { url type subType sizes hotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } ocrHotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } altText __typename } video { shortDescription thumbnail url videoStill uploadDate dateModified link { text url __typename } title type videoId longDescription __typename } threeSixty { id url __typename } augmentedRealityLink { usdz image __typename } __typename } pricing(storeId: $storeId, isBrandPricingPolicyCompliant: $isBrandPricingPolicyCompliant) { promotion { dates { end start __typename } type description { shortDesc longDesc __typename } dollarOff percentageOff promotionTag savingsCenter savingsCenterPromos specialBuySavings specialBuyDollarOff specialBuyPercentageOff experienceTag subExperienceTag __typename } value original alternatePriceDisplay alternate { bulk { pricePerUnit thresholdQuantity value __typename } unit { caseUnitOfMeasure unitsOriginalPrice unitsPerCase value __typename } __typename } mapAboveOriginalPrice mapDetail { percentageOff dollarOff mapPolicy mapOriginalPriceViolation mapSpecialPriceViolation __typename } message preferredPriceFlag specialBuy unitOfMeasure clearance { value dollarOff percentageOff unitsClearancePrice __typename } conditionalPromotions { dates { start end __typename } description { shortDesc longDesc __typename } experienceTag subExperienceTag eligibilityCriteria { itemGroup minPurchaseAmount minPurchaseQuantity relatedSkusCount omsSkus __typename } reward { tiers { minPurchaseAmount minPurchaseQuantity rewardPercent rewardAmountPerOrder rewardAmountPerItem rewardFixedPrice maxAllowedRewardAmount maxPurchaseQuantity __typename } __typename } nvalues brandRefinementId __typename } __typename } reviews { ratingsReviews { averageRating totalReviews __typename } __typename } seo { seoKeywords seoDescription __typename } taxonomy { breadCrumbs { label url browseUrl creativeIconUrl deselectUrl dimensionName refinementKey __typename } brandLinkUrl __typename } dataSource favoriteDetail @skip(if: $skipFavoriteCount) { count __typename } info { hidePrice ecoRebate quantityLimit categoryHierarchy sskMin sskMax unitOfMeasureCoverage wasMaxPriceRange wasMinPriceRange productSubType { name link __typename } replacementOMSID fiscalYear productDepartment classNumber hasVisuallySimilar forProfessionalUseOnly isSponsored sponsoredMetadata { campaignId placementId slotId sponsoredId trackSource __typename } globalCustomConfigurator { customExperience customButtonText customDescription customExperienceUrl customTitle customPosition __typename } augmentedReality sponsoredBeacon { onClickBeacon onViewBeacon onClickBeacons onViewBeacons __typename } customerSignal { previouslyPurchased __typename } isBuryProduct isGenericProduct returnable hasSubscription isLiveGoodsProduct paintBrand dotComColorEligible paintFamily gccExperienceOmsId isInStoreReturnMessageEligible movingCalculatorEligible label bathRenovation minimumOrderQuantity projectCalculatorEligible subClassNumber protectionPlanSku eligibleProtectionPlanSkus hasServiceAddOns consultationType pipCalculator { coverageUnits display publisher toggle defaultAdditionalCoverage additionalCoveragePercentage __typename } recommendationFlags { visualNavigation pipCollections packages ACC collections frequentlyBoughtTogether bundles batItems __typename } __typename } paintDetails(storeId: $storeId, configId: $configId) @skip(if: $skipPaintDetails) { colorDisplayName brandLogo colorType rgb { red green blue __typename } __typename } badges(storeId: $storeId) { endDate label name color creativeImageUrl message timerDuration timer { timeBombThreshold daysLeftThreshold dateDisplayThreshold message __typename } __typename } fulfillment(storeId: $storeId, zipCode: $zipCode, quantity: $quantity) { fulfillmentOptions { fulfillable type services { type locations { isAnchor locationId inventory { isOutOfStock quantity isInStock isLimitedQuantity isUnavailable maxAllowedBopisQty minAllowedBopisQty __typename } curbsidePickupFlag isBuyInStoreCheckNearBy distance state storeName storePhone type storeTimeZone __typename } deliveryTimeline deliveryDates { startDate endDate __typename } deliveryCharge dynamicEta { hours minutes __typename } hasFreeShipping freeDeliveryThreshold totalCharge deliveryMessage earliestDeliveryDate optimalFulfillment hasSameDayCarDelivery shipFromFastestLocation __typename } __typename } anchorStoreStatus anchorStoreStatusType backordered backorderedShipDate bossExcludedShipStates excludedShipStates seasonStatusEligible onlineStoreStatus onlineStoreStatusType fulfillmentBundleMessage fallbackMode sthExcludedShipState bossExcludedShipState inStoreAssemblyEligible bodfsAssemblyEligible __typename } installServices(storeId: $storeId, zipCode: $zipCode) @skip(if: $skipInstallServices) { scheduleAMeasure gccCarpetDesignAndOrderEligible __typename } keyProductFeatures @skip(if: $skipKPF) { keyProductFeaturesItems { features { name refinementId refinementUrl value __typename } __typename } __typename } bundleFlag sizeAndFitDetail { attributeGroups { attributes { attributeName dimensions __typename } dimensionLabel productType __typename } __typename } subscription @skip(if: $skipSubscribeAndSave) { defaultfrequency discountPercentage subscriptionEnabled __typename } seoDescription bundleSpecificationDetails { parents { parentId __typename } __typename } __typename } }",
"variables": {
"skipSpecificationGroup": False,
"skipFavoriteCount": False,
"skipPaintDetails": True,
"skipInstallServices": True,
"skipKPF": False,
"skipSubscribeAndSave": False,
"isBrandPricingPolicyCompliant": False,
"itemId": "100508445",
"storeId": "4705",
"zipCode": "10005"
},
"isBrandPricingPolicyCompliant": False,
"itemId": "100508445",
"skipFavoriteCount": False,
"skipInstallServices": True,
"skipKPF": False,
"skipPaintDetails": True,
"skipSpecificationGroup": False,
"skipSubscribeAndSave": False,
"storeId": "4705",
"zipCode": "10005"
}
response = requests.post(url, params=params, json=payload, headers=headers)
# Print response
print(response.text)
if response.status_code == 200:
print("Response JSON:", response.json())
func1()
Это ошибка, которую я получаю:
{'data': {'productClientonlyProduct': none}, 'error': [{'Сообщение': 'ProductClientOnlyProduct'}}}
я не знаю. DeepSeek также, но я не мог найти никакого решения, я не хочу использовать селен, так как он настолько медленный, я просто хочу использовать API, чтобы получить результаты быстрее.
Вы можете найти этот API на странице продукта:
Пример продукта: < /strong>
https://www.homedepot.com/p/latex-ite-4 ... 445образно Режим
вы найдете этот API легко:
Подробнее здесь:
https://stackoverflow.com/questions/795 ... raphql-api
1743498472
Anonymous
[b] Это код, который я использую, я в основном хочу получить цену продукта из разных магазинов, я имею в виду, что хочу построить сканер, чтобы поместить разные идентификаторы магазинов, и он получает цены из всех магазинов для этого конкретного продукта. [/b] [code]def func1(): import json import requests headers = { "authority": "apionline.homedepot.com", "method": "POST", "path": "/federation-gateway/graphql?opname=productClientOnlyProduct", "scheme": "https", "accept": "*/*", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "en-US,en;q=0.9,it;q=0.8", "cache-control": "no-cache", "content-length": "11172", "content-type": "application/json", "cookie": "AMCV_F6421253512D2C100A490D45%40AdobeOrg=MCMID|40920061203262528240348224432635813603; THD_PERSIST=; THD_CACHE_NAV_PERSIST=; thda.u=36d8a384-7ecf-2b06-7734-e936594ed1dd; _px_f394gi7Fvmc43dfg_user_id=ZWY0ZjMzZTAtZmNmZi0xMWVmLWIyOGItMDFiYjNmNDM0OGJh; ajs_anonymous_id=ad6fa4e9-8ac2-4898-afbd-7ef97a530fec; trx=5436161433999891084; QuantumMetricUserID=7c1703a046b1ab870405e8e9559404f1; _gcl_au=1.1.1875298573.1742401829; HD_DC=origin; thda.s=97e6fa64-327a-0fa3-cb73-e1505b186cfb; ads=8920f21205efc84e9aa9883b9619d419; _ga_9H2R4ZXG4J=GS1.1.1742993713.6.0.1742994858.60.0.0; _ga=GA1.1.430429979.1742401819; THD_NR=1; DELIVERY_ZIP=10005; DELIVERY_ZIP_TYPE=USER; forterToken=9657c64609084fdab98e7dc764ca717c_1743082805834_839_UDF43-m4_23ck_; QuantumMetricSessionID=b872f9e0f83cfae1017a1ef71bc5c67d; bm_ss=ab8e18ef4e; AKA_A2=A; bm_s=YAAQfEISAjmpP6aVAQAAC48q2gNzp3343XijFXJGZ95f4bIoasikP8c/6E29JnVXD4edSAniDgBcdbxRLMx2qnX/b7xvrN5bQL7Z/XTL0AGQTtdUAtQQHyHo4HIKCmoh5o/pciPMk57hirtPzyQjTzZLivEtHDzhrKwBLx468HGfGcBRgotEJwa0FxtYl2Tel+ciBeJriJfXp/2r//ikVr+FrazHn5on0EeavQ/D65Yh5lEEmW9S6DADfawIH1Pmh3drvFuSNuPq0ls0M9v+ZM5GciSl121cCxCPhZ6mBSd7zNBeXf8l6zh7ATXKAel8F7mEBPak35HqFSugvMf04MNVZ8q1QzBKgJ9t4MAj4DZQ7pZVU0LPQcCH3B3yxwXZoInTNPYvYc6z2eiy5qLQVvv2u4dmPwRBX9aPZq+l9GiEFaB3PPyB1SJRvxrzjm27aaPwM7QiM1RNOEPAaP4=; bm_so=1F1067047E2CD34B07451C6D2F7DCCB662541E5C7339C97A32796F97E8B9F12A~YAAQfEISAjqpP6aVAQAAC48q2gN890Y6VKLY3SZDSuyHIcyVdALI3GvDq78imeZ0BBHnBGAfa1x6hfo7ZjGuBvIp0IDXuiUZVmXfSXyaSXAStS2U8uapNyowf4+C3Q72kaB64zkqpESsOGE96Fbk3ByjKG/xKDS1yQwmkoggxVZa9X1pRhsNIfJpl67Fq7U+XWgpOgiqjwkDch8eCiCQd88MQEUTUgQSMOvVW9vlAkfyBRWk4H7Xl8FDb1DpGPdTQ9ctpHOW2ZgU8+CgxHG/oMFB85zDv3VQ3HT3TGFuJgO+APQt6eCu6fajEiXAkKcFbjuhWHQ7thhyFRiRIZbpqWvj9MPcU84Ns3Yq9vThNmFOpJWxHKrM5vkRgcKuQxGt3jvtW8pRf9Joq3fFu2XD/7BusQc5NPW3tBaZpJ8AbeiiO2EV7dpglkKdOFVFlosxZWuqgkCKUL34qLgvtgB2MIpy; bm_sz=F36A53604B2EFF3ADD09B85FCA4F1CD1~YAAQfEISAjupP6aVAQAAC48q2hssshKN/w04+LVngizUccL+Fvgur5JnUdtt3K/QQwYJl0Kky7oJg/MbuzIHILRFtKBDY+6Ifzhalk7PelXaYty/AVPywEt0Y6Jy2lmsDjI0lE3AyfbMOqiFiFZkQNcP5p8HBrwkiEXgk3UP1//YDLvoinQk2hb0wSnKe51sNKAnzp3BeMVCwJbtfm8cCzu6qtsIgGpU8QOC+IY7pTeq5cBStRpH3xr5Xw+uKgfk8vVPrc0RyD5WfxFnopwStAMk2JS4rzkUuowWcmwLOybfDGA7kFEj4QUqJ7jPyq3fjtLNBvAYGF6TosrnAnlBUO13rYpC4izMZ27XsWcovSDm1emwK2B2QgIV6Pwgv3iAY3jgFmWFZHEfXFglFBAJ2Ts=~3293753~3422520; _abck=47695A247A6A6CDAACFADDAB4F2983CD~0~YAAQfEISAtWpP6aVAQAAo5Qq2g0xdbthCQ17/vZDIMbVynuUDgB4VmnYvsgEpCxoNvrKb+qWuUIVfqF1F3gDdEV9PVedyacX0+02U4sIp2huyDP2TIgD+i/FmFPvBzUbH2Yxp7WeRVD5maTraN4rjBwmfBp7ZUyfnVUZsszFImoHv6ZXrlqSq2gh+YLiUb8DKhkig9VToH40tksuEkn068kPd63cxtCg0aSiUe85AFwcLPQ89cE6YpOTPb0Wiame2DUFHcSVingSFK38V47xJ9IzKqNoAYRagrvzylhO4+TysVV/Z7jgQrWVEDZvwQM/74iPqgj+EDPzBNZzv4z5rbFxwax3K5OTy3+aQ29+u0y+JfIjEUHnuqdCLr09LZfvRbzZ3P/NTSZq2jIwfOBzoq4LRZHHgmCPMbleENxWYJMlORSi6D5DpruQqtDRzpYBZ2/FWcl/qQDlf23Ga+qrPdWgas6NadY/OToVbRNYvfXtDYyh+loSb6E6mWrug4HTEMPTFnlIPYXuY9Twbr4yCNKI9ZQop/MlOHInKAf2D7Y0f3NXwOS1LQDrjaDpyaE8GGrSOEhQ/UNbdyHYAUK6Fhb2XRDoTZn2ruUkcZRaqsxNUeihkQr+rMmG64EKyPHKJI7+8udfJfcBzu+132Sk0X19lM4TczsIXXxQCyH36GWrzfl4Sys462lPa7Tt65J7ZM2flTHXs5ZYr3ixS1PHXw==~-1~-1~-1; kndctr_F6421253512D2C100A490D45_AdobeOrg_cluster=va6; kndctr_F6421253512D2C100A490D45_AdobeOrg_identity=CiY0MDkyMDA2MTIwMzI2MjUyODI0MDM0ODIyNDQzMjYzNTgxMzYwM1ISCPnxiN3XMhABGAEqA09SMjAA8AHRtKrR3TI%3D; THD_SESSION=; THD_CACHE_NAV_SESSION=; ak_bmsc=83582C9096925CD2B42AF5B52AB0EB33~000000000000000000000000000000~YAAQbEISAjoRYa6VAQAAV6Mq2hugrd4XVJYjPGpLHYxVlZ1W+HQIdHrjiQ8byArLksPJVtYM4uhCnCFtcuKJkAn5SwVK8MPccr/gJ2s+2q7jFKljby2y725UguSmkH5pTyO42N0RaDsBttJBUqEgn/TB6xgwdsvmHpGMFUM9bb6tfVE96F/fPXG1zVLtxULOUbhzYB/QkVbOjv9F1Ixelm2GcQgHbMcSr+sa4PC4dOk5gsKAHAEzMKb48SGGkffwutMyN553OQEWrLtyfeRgYX6UlFt50Blg6dbZb/tPt4MEZ3LAZ2GikOzFFU0yF2R5BGazxVyKNiqbpa3Ye1zGGjDjTVbkMT3l58LacvX02jQvKM5ULD+ktJx1jnDpkJ/UR9iudHapQa0J0aRHaC93Lbw+lWAvQkRs2sTw8xuDw1Dmv5JMU+BejfoODka5JXWhz4IeLm1pYonArFPgihc8wQ==; THD_LOCALIZER=%257B%2522WORKFLOW%2522%253A%2522LOCALIZED_BY_STORE%2522%252C%2522THD_FORCE_LOC%2522%253A%25220%2522%252C%2522THD_INTERNAL%2522%253A%25220%2522%252C%2522THD_LOCSTORE%2522%253A%25224705%252BSouthcenter%2520-%2520Tukwila%252C%2520WA%252B%2522%252C%2522THD_STRFINDERZIP%2522%253A%252298188%2522%252C%2522THD_STORE_HOURS%2522%253A%25221%253B7%253A00-20%253A00%253B2%253B6%253A00-22%253A00%253B3%253B6%253A00-22%253A00%253B4%253B6%253A00-22%253A00%253B5%253B6%253A00-22%253A00%253B6%253B6%253A00-22%253A00%253B7%253B6%253A00-22%253A00%2522%252C%2522THD_STORE_HOURS_EXPIRY%2522%253A1743125586%257D", # Truncated for brevity "origin": "https://www.homedepot.com", "pragma": "no-cache", "priority": "u=1, i", "referer": "https://www.homedepot.com/", "sec-ch-ua": '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36", "x-api-cookies": '{"x-user-id":"36d8a384-7ecf-2b06-7734-e936594ed1dd"}', "x-cloud-trace-context": "6650a67f833b4d7585f82af783f3a543/2;o=1", "x-current-url": "/p/Latex-ite-4-75-Gal-Ultra-Shield-Driveway-Filler-Sealant-70691/100508445", "x-debug": "false", "x-experience-name": "fusion-gm-pip-desktop", "x-hd-dc": "origin", "x-parent-trace-id": "f9c9e27a461544e6218e9ad7f5e9222b/13316437098234969620", "x-thd-customer-token": "" } url = "https://apionline.homedepot.com/federation-gateway/graphql?opname=productClientOnlyProduct" params={ "opname":"productClientOnlyProduct" } payload={ "operationName": "productClientOnlyProduct", "query": "query productClientOnlyProduct($itemId: String!, $dataSource: String, $loyaltyMembershipInput: LoyaltyMembershipInput, $skipSpecificationGroup: Boolean = false, $storeId: String, $isBrandPricingPolicyCompliant: Boolean, $skipFavoriteCount: Boolean = false, $configId: String, $skipPaintDetails: Boolean = true, $zipCode: String, $quantity: Int, $skipInstallServices: Boolean = true, $skipKPF: Boolean = false, $skipSubscribeAndSave: Boolean = false) { product(itemId: $itemId, dataSource: $dataSource, loyaltyMembershipInput: $loyaltyMembershipInput) { itemId dataSources identifiers { canonicalUrl brandName itemId modelNumber productLabel storeSkuNumber upcGtin13 skuClassification specialOrderSku toolRentalSkuNumber rentalCategory rentalSubCategory upc productType isSuperSku parentId omsThdSku sampleId roomVOEnabled __typename } specificationGroup @skip(if: $skipSpecificationGroup) { specifications { specName specValue __typename } specTitle __typename } availabilityType { discontinued status type buyable __typename } details { description collection { url name collectionId __typename } installation { serviceType leadGenUrl __typename } highlights __typename } media { images { url type subType sizes hotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } ocrHotspots { coordinate { xCoordinate yCoordinate __typename } omsIDs __typename } altText __typename } video { shortDescription thumbnail url videoStill uploadDate dateModified link { text url __typename } title type videoId longDescription __typename } threeSixty { id url __typename } augmentedRealityLink { usdz image __typename } __typename } pricing(storeId: $storeId, isBrandPricingPolicyCompliant: $isBrandPricingPolicyCompliant) { promotion { dates { end start __typename } type description { shortDesc longDesc __typename } dollarOff percentageOff promotionTag savingsCenter savingsCenterPromos specialBuySavings specialBuyDollarOff specialBuyPercentageOff experienceTag subExperienceTag __typename } value original alternatePriceDisplay alternate { bulk { pricePerUnit thresholdQuantity value __typename } unit { caseUnitOfMeasure unitsOriginalPrice unitsPerCase value __typename } __typename } mapAboveOriginalPrice mapDetail { percentageOff dollarOff mapPolicy mapOriginalPriceViolation mapSpecialPriceViolation __typename } message preferredPriceFlag specialBuy unitOfMeasure clearance { value dollarOff percentageOff unitsClearancePrice __typename } conditionalPromotions { dates { start end __typename } description { shortDesc longDesc __typename } experienceTag subExperienceTag eligibilityCriteria { itemGroup minPurchaseAmount minPurchaseQuantity relatedSkusCount omsSkus __typename } reward { tiers { minPurchaseAmount minPurchaseQuantity rewardPercent rewardAmountPerOrder rewardAmountPerItem rewardFixedPrice maxAllowedRewardAmount maxPurchaseQuantity __typename } __typename } nvalues brandRefinementId __typename } __typename } reviews { ratingsReviews { averageRating totalReviews __typename } __typename } seo { seoKeywords seoDescription __typename } taxonomy { breadCrumbs { label url browseUrl creativeIconUrl deselectUrl dimensionName refinementKey __typename } brandLinkUrl __typename } dataSource favoriteDetail @skip(if: $skipFavoriteCount) { count __typename } info { hidePrice ecoRebate quantityLimit categoryHierarchy sskMin sskMax unitOfMeasureCoverage wasMaxPriceRange wasMinPriceRange productSubType { name link __typename } replacementOMSID fiscalYear productDepartment classNumber hasVisuallySimilar forProfessionalUseOnly isSponsored sponsoredMetadata { campaignId placementId slotId sponsoredId trackSource __typename } globalCustomConfigurator { customExperience customButtonText customDescription customExperienceUrl customTitle customPosition __typename } augmentedReality sponsoredBeacon { onClickBeacon onViewBeacon onClickBeacons onViewBeacons __typename } customerSignal { previouslyPurchased __typename } isBuryProduct isGenericProduct returnable hasSubscription isLiveGoodsProduct paintBrand dotComColorEligible paintFamily gccExperienceOmsId isInStoreReturnMessageEligible movingCalculatorEligible label bathRenovation minimumOrderQuantity projectCalculatorEligible subClassNumber protectionPlanSku eligibleProtectionPlanSkus hasServiceAddOns consultationType pipCalculator { coverageUnits display publisher toggle defaultAdditionalCoverage additionalCoveragePercentage __typename } recommendationFlags { visualNavigation pipCollections packages ACC collections frequentlyBoughtTogether bundles batItems __typename } __typename } paintDetails(storeId: $storeId, configId: $configId) @skip(if: $skipPaintDetails) { colorDisplayName brandLogo colorType rgb { red green blue __typename } __typename } badges(storeId: $storeId) { endDate label name color creativeImageUrl message timerDuration timer { timeBombThreshold daysLeftThreshold dateDisplayThreshold message __typename } __typename } fulfillment(storeId: $storeId, zipCode: $zipCode, quantity: $quantity) { fulfillmentOptions { fulfillable type services { type locations { isAnchor locationId inventory { isOutOfStock quantity isInStock isLimitedQuantity isUnavailable maxAllowedBopisQty minAllowedBopisQty __typename } curbsidePickupFlag isBuyInStoreCheckNearBy distance state storeName storePhone type storeTimeZone __typename } deliveryTimeline deliveryDates { startDate endDate __typename } deliveryCharge dynamicEta { hours minutes __typename } hasFreeShipping freeDeliveryThreshold totalCharge deliveryMessage earliestDeliveryDate optimalFulfillment hasSameDayCarDelivery shipFromFastestLocation __typename } __typename } anchorStoreStatus anchorStoreStatusType backordered backorderedShipDate bossExcludedShipStates excludedShipStates seasonStatusEligible onlineStoreStatus onlineStoreStatusType fulfillmentBundleMessage fallbackMode sthExcludedShipState bossExcludedShipState inStoreAssemblyEligible bodfsAssemblyEligible __typename } installServices(storeId: $storeId, zipCode: $zipCode) @skip(if: $skipInstallServices) { scheduleAMeasure gccCarpetDesignAndOrderEligible __typename } keyProductFeatures @skip(if: $skipKPF) { keyProductFeaturesItems { features { name refinementId refinementUrl value __typename } __typename } __typename } bundleFlag sizeAndFitDetail { attributeGroups { attributes { attributeName dimensions __typename } dimensionLabel productType __typename } __typename } subscription @skip(if: $skipSubscribeAndSave) { defaultfrequency discountPercentage subscriptionEnabled __typename } seoDescription bundleSpecificationDetails { parents { parentId __typename } __typename } __typename } }", "variables": { "skipSpecificationGroup": False, "skipFavoriteCount": False, "skipPaintDetails": True, "skipInstallServices": True, "skipKPF": False, "skipSubscribeAndSave": False, "isBrandPricingPolicyCompliant": False, "itemId": "100508445", "storeId": "4705", "zipCode": "10005" }, "isBrandPricingPolicyCompliant": False, "itemId": "100508445", "skipFavoriteCount": False, "skipInstallServices": True, "skipKPF": False, "skipPaintDetails": True, "skipSpecificationGroup": False, "skipSubscribeAndSave": False, "storeId": "4705", "zipCode": "10005" } response = requests.post(url, params=params, json=payload, headers=headers) # Print response print(response.text) if response.status_code == 200: print("Response JSON:", response.json()) func1() [/code] [b] Это ошибка, которую я получаю: [/b] {'data': {'productClientonlyProduct': none}, 'error': [{'Сообщение': 'ProductClientOnlyProduct'}}} [b] я не знаю. DeepSeek также, но я не мог найти никакого решения, я не хочу использовать селен, так как он настолько медленный, я просто хочу использовать API, чтобы получить результаты быстрее. Вы можете найти этот API на странице продукта: Пример продукта: < /strong> https://www.homedepot.com/p/latex-ite-4-75-gal-ultra-shield-driveway-filler-sealant-70691/100508445образно Режим [/b] [b] вы найдете этот API легко: [/b] Подробнее здесь: [url]https://stackoverflow.com/questions/79541256/fetching-homedepot-product-details-using-non-public-graphql-api[/url]