الحصول على عناصر سلة التسوق باستخدام الثعبان بعد الطلب

0

لقد كنت أتصفح تدفق مكدس في اليومين الماضيين وكنت أبحث في العديد من مقاطع الفيديو والمنتديات المختلفة ، ولكن لا يمكنني تشغيل هذا لسبب ما. أحاول إضافة عنصر إلى سلة التسوق تلقائيًا على https://www.toytokyo.com/medicom-toy-kaws-together-black/ وحتى أحصل على 200 رمز استجابة صحيحًا ، ولكن عند التحقق من عربة التسوق تقول أن تكون فارغة.

هنا هو حمولة الطلب التي يحتاجها.

------WebKitFormBoundary2abcTSnRV9XhBx4h
Content-Disposition: form-data; name="action"

add
------WebKitFormBoundary2abcTSnRV9XhBx4h
Content-Disposition: form-data; name="product_id"

4806
------WebKitFormBoundary2abcTSnRV9XhBx4h
Content-Disposition: form-data; name="qty[]"

1
------WebKitFormBoundary2abcTSnRV9XhBx4h--

وهذا ما أفعله لإرسال طلب ما بعد.

payload = {'action': 'add', 'product_id': 4806, 'qty[]': 1}

get = requests.get("https://www.toytokyo.com/medicom-toy-kaws-together-black/")

post = requests.post("https://www.toytokyo.com/remote/v1/cart/add", data=payload)

print(post.status_code, post.content)

get = requests.get("https://www.toytokyo.com/cart.php")

print(get.status_code, get.text)

لست متأكدًا مما إذا كنت أفعل شيئًا خاطئًا ، لكنني أحصل على الإجابة الصحيحة من ما يمكنني قوله.

تحرير: الإجابة أدناه

فقط لأي شخص قد يتعثر في وقت لاحق ، أخذت نصيحة الأشخاص الذين علقوا أدناه وأنشأت متغيرًا يسمى session وتعيينه باستخدام session = requests.Session() مما يسمح لبرنامجك بالاستمرار عبر كل طلب جديد ترسله. ال session يحتوي المتغير أيضًا على جميع الأساليب نفسها التي يستخدمها الطلب نفسه. لذلك استبدلت للتو كل شيء يستخدم الطلبات واستبدله بجلسة.

1 إجابة

0

تقوم بإجراء مكالمة POST / GET الصحيحة ، ولكن عليك أن تأخذ في الاعتبار حقيقة أنك تحتاج أيضًا إلى طريقة ما لتتبع "جلستك". على الأرجح في صفحة حقيقية ، يتم استخدام ملفات تعريف الارتباط لتتبع محتويات سلة التسوق الخاصة بك. ونتيجة لذلك ، عندما تطلب محتويات سلة التسوق الخاصة بك ، ستحتاج إلى تضمين ملف تعريف الارتباط هذا. للقيام بذلك ، قم بإضافة ملفات تعريف الارتباط إلى التعليمات البرمجية الخاصة بك باستخدام جلسة الطلبات :

s = requests.Session() # cookies are stored in the session

payload = {'action': 'add', 'product_id': 4806, 'qty[]': 1}

get = s.get("https://www.toytokyo.com/medicom-toy-kaws-together-black/")

post = s.post("https://www.toytokyo.com/remote/v1/cart/add", data=payload)

print(post.status_code, post.content)

get = s.get("https://www.toytokyo.com/cart.php")

print(get.status_code, get.text)
:مؤلف
فوق
قائمة طعام