Skip to main content

retail-bot-research

Project description

轻松跳过烦人的人机,实现高效采集数据

注意:模块方法都是封装好的,专过人机检测风控,最好不要随意修改,因为某些参数一旦修改,可能会造成一系列的请求错误,或人机无法绕过的情况,如果有什么问题,可以直接私。

改模块将会持续更新...

使用流程 0.0.3

  1. 安装模块
pip install walmartBot
  1. 导入模块
from walmartBot import WalMart

WalMart = WalMart()
res = WalMart.request('https://www.walmart.com/ip/Skytech-Archangel-Gaming-PC-Desktop-AMD-Ryzen-7-7700-NVIDIA-GeForce-RTX-5060-1TB-Gen4-NVMe-SSD-32GB-DDR5-RAM-Windows-11/17438712331?athAsset=eyJhdGhjcGlkIjoiMTc0Mzg3MTIzMzEiLCJhdGhzdGlkIjoiQ1MwMjAiLCJhdGhhbmNpZCI6Ikl0ZW1DYXJvdXNlbCIsImF0aHJrIjowLjB9&athena=true')
print(res.text)
  1. 代理配置与查看
WalMart = WalMart()
# 设置代理
WalMart.set_proxy('socks5h://127.0.0.1:7898/')
WalMart.set_proxy("socks5h://username:password@ip:port/")
# 禁用代理
WalMart.disable_proxy()
# 查看代理字符串
print(WalMart.current_proxy())
# 查看request使用的代理
print(WalMart.get_requests_proxy())
  1. 获取过人机验证的令牌
WalMart = WalMart()
# 获取 _pxvid 令牌
get_pxvid_v2 = WalMart.get_pxvid_v2()
# 使用令牌请求资源
res = WalMart.request(
    url='https://www.walmart.com/ip/Skytech-Archangel-Gaming-PC-Desktop-AMD-Ryzen-7-7700-NVIDIA-GeForce-RTX-5060-1TB-Gen4-NVMe-SSD-32GB-DDR5-RAM-Windows-11/17438712331?athAsset=eyJhdGhjcGlkIjoiMTc0Mzg3MTIzMzEiLCJhdGhzdGlkIjoiQ1MwMjAiLCJhdGhhbmNpZCI6Ikl0ZW1DYXJvdXNlbCIsImF0aHJrIjowLjB9&athena=true',
    cookies={"_pxvid": get_pxvid_v2}
)
print(res.text)
# 注意:获取令牌后,最好等待5-10秒在使用。 1个令牌不能并发请求多个资源,想要并发请求资源可以自己搭建一个令牌池。
# 一个令牌可以请求多个资源,令牌如果失效了,可以存储起来,等待2-5个小时即可恢复使用,具体轮询时间请自测
# 建议请求数据使用socks5h协议代理,该协议支持服务器DNS解析, 并选择好的海外隧道IP池,支持自动更新IP是最好不过的方式。
# 获取令牌 WalMart.get_pxvid_v2(proxies={...}) 也可以自己设置独立的ip去请求令牌。

使用场景如下(非登陆模式)

  1. 产品数据的采集(主要功能)
from walmartBot import WalMart
# 实例化
WalMart = WalMart()
# 设置ip池,最好是隧道代理
WalMart.set_proxy("socks5h://username:password@ip:port/")
# 请求获取数据
res = WalMart.request('https://www.walmart.com/ip/Skytech-Archangel-Gaming-PC-Desktop-AMD-Ryzen-7-7700-NVIDIA-GeForce-RTX-5060-1TB-Gen4-NVMe-SSD-32GB-DDR5-RAM-Windows-11/17438712331?athAsset=eyJhdGhjcGlkIjoiMTc0Mzg3MTIzMzEiLCJhdGhzdGlkIjoiQ1MwMjAiLCJhdGhhbmNpZCI6Ikl0ZW1DYXJvdXNlbCIsImF0aHJrIjowLjB9&athena=true')
# 拿到数据
print(res.text)
  1. 订单信息的采集
import random
import re
import time
from walmartBot import WalMart

def get_tracking_cookie(tracking_id) -> dict:
    i = 0
    while i < 3:
        res = WalMart.request(f'https://www.walmart.com/tracking?tracking_id={tracking_id}')
        get_dict = res.cookies.get_dict()
        time.sleep(1)
        i += 1
        if len(get_dict) > 5:
            return get_dict

def get_tracking_data(cookie, tracking_id) -> dict:
    headers = {
        "accept": "*/*",
        "referer": f"https://www.walmart.com/tracking?tracking_id={tracking_id}&language=en",
        "Wm_consumer.Id": "27909687-61fa-401e-b321-27da8fa30291",
        "Wm_svc.Env": "prod2.0.0",
        "Wm_svc.Name": "HALO-DECK-CLIENT"
    }
    res = WalMart.request4(f'https://www.walmart.com/api/tracking?trackingId={tracking_id}&language=en',
                           headers={**WalMart.headers(''), **headers},
                           cookies=cookie
                           )
    try:
        res_data = res.json()
        return res_data
    except:
        print(f'错误html - {tracking_id}')

if __name__ == '__main__':
    # 实例化
    WalMart = WalMart()
    # 设置代理
    WalMart.set_proxy("socks5h://t16233522400727:gj7yv093@u980.kdltpspro.com:15818/")
    # 订单号
    tracking_ids = ['1LSCXLNA012957153', '1LSCXLNA012630543', '1LSCXLNA012279691', '1LSCXLNA012444333', '1LSCXLNA012958930', '1LSCXLNA012976471']
    for tracking_id in tracking_ids:
        # 获取cookie
        cookie = get_tracking_cookie(tracking_id)
        # 请求获取订单信息(高并发可能会出现其他小问题,如果请求报错,可以重试任务即可,整个流程可以稳定运行,成功率在80%以上,具体数据自己测)
        print(get_tracking_data(cookie, tracking_id))

注意!!!

  1. 请试用socks5h协议代理,该协议支持服务器DNS解析
  2. 请试用海外隧道IP池,稳定性强,防风控强
  3. 本地试用的翻墙也要稳定,不要使用不稳定机场或节点,否定可能会请求失败报错等... 该风控可能由两种情况引起,一个是header检测,另一个是tls检测。 目前已解决header检测风控,测试后发现可以正常获取数据,如果多线程获取数据任然平凡出现风控,请联系我,我将添加tls指纹功能

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

walmartbot-0.0.3.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

walmartbot-0.0.3-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file walmartbot-0.0.3.tar.gz.

File metadata

  • Download URL: walmartbot-0.0.3.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for walmartbot-0.0.3.tar.gz
Algorithm Hash digest
SHA256 ceb845b8a5553242b9aba8e870ebd40b8403f5ca7cfbb27ae4616152127fd9a5
MD5 7ea2570dbac74db4b1b203bb7ef656f7
BLAKE2b-256 517e4245b4f6f99e6b9fb85d2a959287f3847dde29e95462647e6b8b7ee10bbb

See more details on using hashes here.

File details

Details for the file walmartbot-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: walmartbot-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for walmartbot-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f7c77ff6bc0dd79b23ff90b2498ac08262add2b26f3948e5eb97a321404c3377
MD5 a77c593a4ace87b3a884b897017b4209
BLAKE2b-256 c0951819ff794f0eb76fa3c892cafb5d73bd52802a1b34cee0d5bf9ad6a08880

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page