囧囧街
囧囧街各大品牌产品测评,给您一个有价值的参考!
文章25989浏览5047036本站已运行11315

【2022年11月】

最终目标预测:

我们都有很多须要在淘宝热卖、秒拍的货品,蛮长地等候时间来临并无差别抢货品,常常两件更让人烦闷的事。而github上很多杰出的开源码,都宣称能智能化顺利完成选定货品热卖,不过照样的运转那些流程这时候,就会辨认出各式各样的大坑须要踩,责任编辑是想归纳呵呵前段时间采用这类流程辨认出的难题,期望能裨伯粉漏、略有庆丰。生前Jarnisy能恒定运转,淘宝也不能检验出已经开始用电脑热卖货品。

原初工程项目:

https://github.com/Jesseslco/taobao_auto_buy/tree/alpha

那个原初工程项目是我从为数众多淘宝手动付款开源流程中,觉得标识符最典雅,扩展性较为好的流程,但在前述采用操作过程中,却辨认出它连基本上的交付两个不须要热卖的货品都做不出,上面历史记录呵呵我的排错笔记。

软件系统:

1. 加进试验性腺模块

那时很多大中文网站有对selenium采行了监控监督机制。比如说恒定情况下他们用应用程序出访淘宝等中文网站的 window.navigator.webdriver的值为undefined。而采用selenium出访则该值为true,他们须要加进如下表所示的option。京东捡漏群出口处

fromselenium.webdriverimportChromefromselenium.webdriverimportChromeOptionsopts=ChromeOptions()opts.add_experimental_option("prefs",{"profile.managed_default_content_settings.images":2})不加载图片,加快出访速度opts.add_experimental_option(excludeSwitches,[enable-automation])此步骤很重要,设置为开发者模式,防止被各大中文网站识别出来采用了Seleniumdriver=Chrome(options=option)

2. 加进字段清除流程

只采用上述标识符是不够的,实测还是会被阿里检验监督机制探测到。所以他们在每个网页刚刚打开,还没有运转网页的脚本前,运转上面给定的脚本。

from selenium.webdriver import Chrome

driver = Chrome(./chromedriver)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, webdriver, {
      get: () => undefined
    })
  """
})
driver.get(http://baidu.com)

须要特别注意的是,只要出现了打开新的网页或者刷新旧网页事件,他们就须要加一段这样的标识符在最前面,比如说:

self._browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
                      "source": """
                        Object.defineProperty(navigator, webdriver, {
                          get: () => undefined
                        })
                      """
                    })  

self._browser.switch_to.window(self._browser.window_handles[1])

def _click_until_redirect(self, element, current_url):
        
        self._browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
                      "source": """
                        Object.defineProperty(navigator, webdriver, {
                          get: () => undefined
                        })
                      """
                    })    

        while current_url == self._browser.current_url:
            try:
                element.click()
            except:
                continue

3. 通过上述手段,基本上旧不能被检验到用了selenium,该标识符还有两个坑,也是chrome drive 版本要和电脑的chrome版本一致。

这里有个宝藏网址,能下载各种版本。

4. 另外是如果热卖紧俏物品,最好加两个毫秒级别的定时功能,偷偷告诉你,热卖某超市上面的53度茅台,应该提前750ms左右运转流程。

def _timer(self, buy_time):

        buy_time_raw = datetime.strptime(buy_time, "%Y-%m-%d %H:%M:%S:%f")
        print(buy_time_raw)
        while datetime.now() < buy_time_raw:
            self._timer_printer(buy_time_raw)

5. 此时那个框架还不够快,建议修改呵呵标识符逻辑,具体来说:

首先,通过手工的方式把要热卖的物品加入购物车;

然后,清洗呵呵标识符,让流程直接进入你的购物车,到点直接提交需求,把buy函数稍微修改呵呵,就变成了购物车模式,要注意config里面打开的链接,也要换成你购物车的url。

def _buy(self):
        

        self._logger.info("已经开始倒计时")
        self._timer(self._buy_time)
        self._logger.info("开始热卖")

        
        sumit_element = WebDriverWait(self._browser, 300, self.delta).until(EC.element_to_be_clickable((By.ID, "J_Go")))
        self._click_until_redirect(sumit_element, self._browser.current_url)
        self._logger.info(sumit_element)

        checkout_element = WebDriverWait(self._browser, 300, self.delta).until(EC.element_to_be_clickable((By.XPATH, "//div[@id=submitOrderPC_1]//a[@class=go-btn]")))
        self._logger.info(checkout_element)
        self._click_until_redirect(checkout_element, self._browser.current_url)

        self._logger.info("热卖结束")

好,谢谢各位朋友,各位朋友耗子尾汁,早日抢到心怡的货品。

sunder1987
上一篇:
下一篇:

相关推荐

隐藏边栏