大家早上好。因此,我决定测试我的编码技能,并构建自己一直想构建的东西:运动鞋机器人。对于不认识运动鞋机器人的人来说,这是一个自动将运动鞋放入购物车并结账的机器人。在大型运动鞋发布中,鞋子可以在一秒钟之内售罄,因此脚本比手动浏览网页要快得多。
无论如何,我选择用python做我的机器人,并且通过varius POST和GET请求,它几乎可以正常工作了。如果您想查看特定的网站,该机器人就可以访问www.jimmyjazz.com。我之所以选择它们,主要是因为它们的僵尸程序检测能力很差。
我遇到的问题是我的卡实际上没有被扣款,这我不理解。该漫游器运行完美,当我发送上一个发布请求时,输出是结帐页面的页面源,这很有意义,因为当我尝试购买时,由于我使用的是隐私卡,因此应重新路由到结帐页面支出上限为1美元(因此应该会被拒绝)。无论如何,我将在这里链接我的机器人:
import requests
import random
from bs4 import BeautifulSoup as bs
import threading
proxies = {
}
# session = requests.session()
def get_sizes_in_stock(session):
endpoint = "http://www.jimmyjazz.com/womens/footwear/jordan-jordan-1-
high-prem/AH7389-007?color=Black"
response = session.get(endpoint)
soup = bs(response.text, "html.parser")
div = soup.find("div", {"class":"box_wrapper"})
all_sizes = div.find_all("a")
sizesInStock = []
for size in all_sizes:
if "piunavailable" not in size["class"]:
sizeID = size["id"]
sizesInStock.append(sizeID.split("_")[1])
print(sizesInStock)
return sizesInStock
def add_to_cart(session):
sizes = get_sizes_in_stock(session)
chosenSize = random.choice(sizes)
endpoint = "http://www.jimmyjazz.com/cart-request/cart/add/%s/1"%
(chosenSize)
resp = session.get(endpoint)
print(chosenSize)
return '"success":1' in resp.text
def check_out(session):
dict = {
}
url = "https://api.levelaccess.net/analytics/3.0/results"
coPost = session.post(url, dict)
endpoint0 = "https://www.jimmyjazz.com/cart/checkout"
resp = session.get(endpoint0)
soup = bs(resp.text, "html.parser")
inputs = soup.find_all("input", {"name":"form_build_id"})
form_build_id = inputs[0]["value"]
# print(form_build_id)
endpoint1 = "https://www.jimmyjazz.com/cart/checkout"
payload1 = {
"billing_email": "",
"billing_email_confirm": "",
"billing_phone": "",
"email_opt_in": "1",
"shipping_first_name": "",
"shipping_last_name": "",
"shipping_country_html": "",
"shipping_address1": "",
"shipping_address2": "",
"shipping_city": "",
"shipping_state": "",
"shipping_zip": "",
"shipping_method": "0",
"signature_required": "1",
"billing_same_as_shipping": "1",
"billing_first_name": "",
"billing_last_name": "",
"billing_country": "US",
"billing_address1": "",
"billing_address2": "",
"billing_city": "",
"billing_state": "",
"billing_zip": "",
"payment_type": "",
"cc_type": "",
"cc_number": "",
"cc_exp_month": "",
"cc_exp_year": "",
"cc_cvv": "",
"gc_num": "",
"form_build_id": form_build_id,
"form_id": "cart_checkout_form",
}
resp1 = session.post(endpoint1,data=payload1)
# print(resp1.text)
soup1 = bs(resp1.text, "html.parser")
inputs1 = soup1.find_all("input", {"name":"form_build_id"})
form_build_id1 = inputs1[0]["value"]
print(form_build_id)
print(form_build_id1)
endpoint2 = "https://www.jimmyjazz.com/cart/confirm"
payload2 = {
"form_build_id": form_build_id1,
"form_id": "cart_confirm_form"
}
resp3 = session.post(endpoint2, data=payload2)
print(resp3.text)
def main():
session = requests.session()
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101
Safari/537.36'}
session.headers.update(headers)
x = get_sizes_in_stock(session)
if len(x) != 0:
print("some sizes in stock")
print("adding a size to cart")
if add_to_cart(session):
print("shoes added to cart")
print("attempting to checkout")
check_out(session)
如果您不能花时间查看所有代码和网站的某些要求,我完全不会怪您。但是我肯定会在安全方面缺少网站上的某些内容。我在结帐页面和确认页面上都找到了令牌。还有什么其他安全手段可以防止僵尸。我听说有些网站要求使用某些Cookie,但是我不确定如何在python中执行此操作。任何其他帮助将不胜感激。
此外,请随时复制此脚本,对其进行修复并将其用于个人用途。我只是觉得建立自己是一件很酷的事情。
编辑:我知道一定有人会说它不起作用,因为我没有发送信息。当我用我的实际信息运行字典时,我正在填写字典,我只是觉得我不应该在线上发布该字典...