美文网首页【python】初学者
【python】破解淘宝登陆反爬

【python】破解淘宝登陆反爬

作者: 米兰的小铁匠 | 来源:发表于2020-01-10 16:46 被阅读0次

    序言

    在进行淘宝登陆时,有些时候是需要进行滑动验证或者短信验证的,然而恰恰是如此,阿里对python做了反爬机制,基本上无法利用selenium来进行滑动验证,由此我们只能跳过其登陆页面。。。

    准备

    • python环境
    • 安装selenium环境:pip3 install selenium

    详情可点此链接https://www.jianshu.com/p/644b10a8db87

    思路

    • !!!!需手动将微博与淘宝账号绑定,在淘宝个人中心可改
    • 进入淘宝登陆页面
    • 点击第三方微博登录
    • 进入主页面,获取信息

    代码(下方给出效果显示)

    #encoding=utf-8
    #上面这句话看起来是注释,但其实是有用的,指明了这个脚本的字符集编码格式
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    import time
    
    def get_url():
        #
        url = 'https://login.taobao.com/'
        ch_options = webdriver.ChromeOptions()
    
        # 不加载图片,加快访问速度
        ch_options.add_experimental_option("prefs", {"profile.mamaged_default_content_settings.images": 2})
    
        # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
        ch_options.add_experimental_option('excludeSwitches', ['enable-automation'])
        # ch_options.add_argument('--headless')  # 无头模式
        # ch_options.add_experimental_option("debuggerAddress", "127.0.0.1:9999")
        ch_options.add_argument('--proxy--server=127.0.0.1:8080')
        ch_options.add_argument('--disable-infobars')  # 禁用浏览器正在被自动化程序控制的提示
        ch_options.add_argument('--incognito')
        browser = webdriver.Chrome(options=ch_options)
        browser.maximize_window()
        wait = WebDriverWait(browser, 10)
    
        # 打开网页
        browser.get(url)
    
        # 等待 密码登录选项 出现
        password_login = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.qrcode-login > .login-links > .forget-pwd')))
        password_login.click()
    
        # 等待 微博登录选项 出现
        weibo_login = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.weibo-login')))
        weibo_login.click()
    
        # 获取账号输入框
        EMAIL = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#pl_login_logged > div > div:nth-child(2) > div >input')))
        EMAIL.send_keys('微博账号') # 填入微博账号
    
        # 获取密码输入框
        PASSWD = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#pl_login_logged > div > div:nth-child(3) > div > input')))
        PASSWD.send_keys('微博密码') # 填入微博密码
    
        time.sleep(2)
    
        # 获取登陆按钮
        button = wait.until(EC.element_to_be_clickable(
            (By.CSS_SELECTOR, '#pl_login_logged > div > div:nth-child(7) > div:nth-child(1) > a > span')))
        button.click()
        cookies_list = browser.get_cookies()
        cookie_dict = {i["name"]:i["value"] for i in cookies_list}
        #print(cookie_dict)
    
        time.sleep(2)
        taobao_name = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,
                                                                 '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
        # 输出淘宝昵称
        print(taobao_name.text)
        # 点击搜索
        browser.find_element_by_class_name('btn-search').click()
        cookies_list = browser.get_cookies()
        cookie_dict = {i["name"]:i["value"] for i in cookies_list}
        print(cookie_dict)
        browser.close()
    get_url()
    # 输出淘宝名称与进入淘宝所携带的cookies
    # 可尝试通过淘宝cookies来爬取1688网的数据信息
    

    效果图

    说点

    • 各位,活得自在些~

    肖申克的救赎

    相关文章

      网友评论

        本文标题:【python】破解淘宝登陆反爬

        本文链接:https://www.haomeiwen.com/subject/yxgractx.html