• selenium模拟登录某宝


    问题1:网站监测自动化程序

    业务需求:登录卖家后台管理系统导出每月的订单数据

    在使用selenium模拟登录某宝后台时出现监测是否使用自动化操作,出现登录失败的情况

    解决思路:

    在网上搜索了一下解决办法,这里记录一下

    1, 个人使用selenium网页自动化操作的最开始配置

    1. import webbrowser
    2. from selenium import webdriver
    3. from selenium.webdriver.common.by import By
    4. webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(CHROME_PATH))
    5. chromeOptions = webdriver.ChromeOptions()
    6. prefs = {"download.default_directory": DOWNLOAD_PATH}
    7. chromeOptions.add_experimental_option("prefs", prefs)
    8. chrome_browser = webdriver.Chrome(chrome_options=chromeOptions)
    •  CHROME_PATH参数时本地谷歌浏览器的chrome.exe地址,个人使用过程中这个感觉没必要【可能是我默认浏览器就是chrome】
    • DOWNLAD_PATH参数是自动化过程中浏览器的默认下载路径,这个根据需要进行配置

    2, 登录某宝后台是仅仅使用上面的基础配置是登录不上去的

    • 设置开发者模式,防止网站识别
    • 通过浏览器的dev_tool在get页面将.webdriver属性改为"undefined"
    1. # 设置为开发者模式,防止网站识别
    2. chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
    3. chrome_browser = webdriver.Chrome()
    4. # 通过浏览器的dev_tool在get页面将.webdriver属性改为"undefined"
    5. chrome_browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    6. "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
    7. })
    •  我也不知道啥原理,加上上面二步还是出现问题,
    • 打开URL后还需要执行一个JS脚本
    1. chrome_browser.implicitly_wait(10)
    2. url = 'https://login.taobao.com/'
    3. chrome_browser.get(url)
    4. chrome_browser.maximize_window()
    5. time.sleep(1)
    6. js = "window.navigator.webdriver=false"
    7. chrome_browser.execute_script(js)
    8. time.sleep(2)
    • 说明:测试过程发现,执行过上面步骤后前面自定义的下载路径失效,默认下载路径变成本地浏览器中设置的。 

     问题2:非图片滑块验证

     后续是输入用户名和密码,点击登录操作,可能首次可以成功登录,但是几次之后点击登录操作时出现以滑块验证,不过还好这个滑块验证不是图片滑块验证,是一拖到底的那种,,应该不难?又是一顿CSDN,终于解决了。。

    1. try:
    2. # 切换框架
    3. chrome_browser.switch_to.frame("baxia-dialog-content")
    4. # 定位到滑块按钮元素
    5. ele_button = chrome_browser.find_elements(By.XPATH, "//span[@id='nc_1_n1z']")[-1]
    6. # 定位到滑块区域元素
    7. ele = chrome_browser.find_elements(By.XPATH, "//span[contains(text(), '最右边')]")[-1]
    8. # 拖动滑块
    9. ActionChains(chrome_browser).drag_and_drop_by_offset(ele_button, ele.size['width']/2,
    10. ele.size['height']).perform()
    11. time.sleep(1)
    12. ActionChains(chrome_browser).drag_and_drop_by_offset(ele_button, ele.size['width'], ele.size['height']).perform()
    13. time.sleep(2)
    14. except:
    15. logger.info(f"没有滑块验证")
    16. logger.info("登录成功...")

     滑块问题OK啦??NO!测试很多次都可以正常登录,但是使用此时多的时候发现滑动太快也会被监测出来,,尼玛。。

    难不倒我,,不是滑动太快吗,,我先滑动一般,松开,休眠1S,在一划到底。。终于暂时解决了。。

    总结:

    对于这种反爬措施很强的网站没有什么是能确保百分百解决问题,任何方法都有其局限性,在一定的时间和空间有效,爬虫与反爬虫本就是相互对抗,相互促进的矛盾事物。这里我使用自动化技术来解决一些重复枯燥的流程化东西,分享目的不是去破坏。

  • 相关阅读:
    WebRTC 视频流接收统计报告
    Flutter基础 -- Flutter布局练习(小项目)
    算法竞赛进阶指南 搜索 0x22 深度优先搜索
    刘畊宏男孩女孩看过来!运动数据分析挖掘!(附全套代码和数据集)
    DAY55 583. 两个字符串的删除操作 + 72. 编辑距离
    DI93a HESG440355R3 通过其Achilles级认证提供网络安全
    11后端开发就是CRUD?没那么简单!
    参数估计法在逻辑斯谛回归的应用
    Makefile 精要(用得最多的规则-附示例)
    【二分查找】算法
  • 原文地址:https://blog.csdn.net/weixin_44007111/article/details/126191215