精华内容
下载资源
问答
  • Python模拟用户登陆网站

    千次阅读 2016-07-11 21:34:03
    Python模拟登陆网站很简单,但是对于网站信息的爬取很重要,这是最基本的功能。 对于Python来说使用自带的urllib可以解决问题,但是我们希望能有更简洁的方法,因为它还是太复杂。 首先我们需要安装requests第...

    Python模拟登陆网站很简单,但是对于网站信息的爬取很重要,这是最基本的功能。


    对于Python来说使用自带的urllib可以解决问题,但是我们希望能有更简洁的方法,因为它还是太复杂。

    首先我们需要安装requests第三方库,这里使用pip安装(就像使用apt-get一样方便,关于如何安装pip,请点击如何安装pip

    sudo -H python3 -m pip install Requests


    安装之后代码就比较简洁了

    import requests
    
    def isEmpty(params_str):
        if(params_str is None):
            return True
        if(len(params_str) == 0):
            return True
        return False
    
    session = requests.Session()
    login_name = str(input('Please input your username:'))
    if(isEmpty(login_name)):
        print('username can not be null or empty')
    login_pass = str(input('Please input your password:'))
    if(isEmpty(login_pass)):
        print('password can not be null or empty')
    url = 'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn'
    params = {'username':login_name, 'password':login_pass}
    s = session.post(url, params)
    print(s.cookies.get_dict())
    

    这里使用的测试网站就是csdn的登陆页面,之所以使用它是因为它比较简单,但是我必须申明使用以上代码恶意访问和攻击csdn网站跟本人无关,代码仅供学习使用

    最后不得不吐嘈一下,访问了这么多次都不需要输入验证码。

    展开全文
  • 任务 在https://pastebin.com网站注册一个账号,利用python实现用户的自动登录和创建paste。该任务需要分成如下两步利用python实现: ...进入https://pastebin.com/之后,发现是以访客的身份进入的,点击身份图...

    任务

    在https://pastebin.com网站注册一个账号,利用python实现用户的自动登录和创建paste。该任务需要分成如下两步利用python实现:

    1. 账号的自动登录
    2. paste的自动创建

    模拟账号登录

    模拟登录,需要知道登录的URL是什么,那么登录URL怎么去看呢。

    进入https://pastebin.com/之后,发现是以访客的身份进入的,点击身份图像的下拉中的LOGIN,进入登录页面,打开Chrome开发工具,选择Network,勾选Preserve log:

    输入用户名和密码,登录进去后,如下图:

     

    这样就找到了需要提交的请求是什么,包括url,请求方法,提交的数据。POST请求是以什么格式提交的数据呢,在Request Header头部可以找到"content-type": "application/x-www-form-urlencoded",这个需要注意,因为经常遇到的还有一种提交形式叫"application/json"。

    在用requests post提交请求的时候,如果是form表单形式传送,则将数据传入data参数,如果是以json格式传送,则需要将数据传入json参数。

    登录之后,点击API菜单,可以从页面中 获取一个api_dev_key,后面实现自动创建paste的时候需要用到。

     

    import requests
    from lxml import etree
    # 登录  https://pastebin.com/
    login_url = "https://pastebin.com/login"
    username = "kuang123321"
    password = "xxxxxx"
    api_dev_key = "4f45a996aa78079d8f7d14f104c45893"
    session = requests.Session()
    form_data = {
        "submit_hidden": "submit_hidden",
        "user_name": username,
        "user_password": password,
        "submit": "Login"
    }
    headers = {"content-type": "application/x-www-form-urlencoded"}
    res = session.post(login_url, data=form_data, headers=headers)
    print(res.status_code, res.url)
    
    # 获取 api_dev_key
    api_url = "https://pastebin.com/api"
    text = session.get(api_url).content.decode("utf-8")
    html = etree.HTML(text)
    target_divs = html.xpath('//*[@id="content_left"]/div[9]/div/text()')
    if target_divs:
        api_dev_key = target_divs[0]
        print(api_dev_key)
    else:
        raise Exception("cannot find api_dev_key")
    自动登录和获取api_dev_key的代码

     

     

    转载于:https://www.cnblogs.com/legend-123/p/11175550.html

    展开全文
  • 进入https://pastebin.com/之后,发现是以访客的身份进入的,点击身份图像的下拉中的LOGIN,进入登录页面,打开Chrome开发工具,选择Network,勾选Preserve log: 输入用户名和密码,登录进去后,如下图:   这样...
  • Python selenium 模拟登录bilibili

    万次阅读 2019-10-26 16:07:25
    Python selenium 模拟登录bilibili ​ Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 ​ 在登录bilibili的时候,会有一个拖动图片的验证——极验验证码。...

    Python selenium 模拟登录bilibili

    Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

    ​ 在登录bilibili的时候,会有一个拖动图片的验证——极验验证码。我们用selenium在Chrome中打开bilibili的登录页面。然后填写登录账号和密码。再点击登录按钮,页面弹出极验验证码,通过js获取两张图片(一张完整的图片,一张有缺口的图片),这两张图片是用canvas画出来的。所有我们用toDataURL(“image/png”)方法拿到的是base64格式的图片。将这两张图片的用PIL中的Image来获转化之后的图片。比较两张图片的像素点,从而计算出拖动块需要移动的距离。
    在这里插入图片描述

    流程图

    在这里插入图片描述

    总体框架

    class LoginBiliBili:
    
        def __init__(self, username, password):
            """
            初始化数据
    
            :param username: bilibili账号
            :param password: 密码
            """
    
        def open(self):
            """
            打开浏览器, 进入登陆界面
            输入用户名, 密码
            点击登陆
    
            :return: None
            """
    
        def get_geetest_image(self):
            """
            获取极验验证码图片
            :return: c_image(王者验证图) ic_image(有缺失的验证图)
            """
    
        def is_pixel_similar(self, c_image, ic_image, x, y):
            """
            比较两张图片的像素点
    
            注意: 像素点比较是有偏差的, 需要允许一定范围的误差,
                我们可以设置一个阈值
            :param ic_image:
            :param c_image:
            :param x:
            :param y:
            :return: 当像素点不相同时, 返回 False
            """
    
        def get_slice_gap(self, c_image, ic_image):
            """
            获取缺口的偏移量
    
            通过比较两张图片的所有像素点, 获取两张图片是从哪里开始不同
            从而得到 移动块 要在 x 方向移动的距离
    
            :param c_image: 完整的图片
            :param ic_image: 有缺失的图片
            :return: 缺口的偏移量
            """
    
        def drag_slider(self, gap):
            """
            拖动滑块
    
            :param gap: 需要拖动的距离
            :return: None
            """
    
        def login_success(self):
            """
            判断是否登陆成功
            :return: 成功返回 True 失败返回False
            """
    
        def login(self):
            """
            开始
    
            :return: None
            """
    
    
    if __name__ == '__main__':
        login = LoginBiliBili('*******', '******')
        login.login()

    初始化数据方法

    将一些初始化数据在__init__()函数中定义

    def __init__(self, username, password):
        """
        初始化数据
    
        :param username: bilibili账号
        :param password: 密码
        """
        self.username = username
        self.password = password
        # 定义浏览器
        self.browser = webdriver.Chrome()
        # 定义显示等待
        self.wait = WebDriverWait(self.browser, 50)
        # bilibili登录url
        self.url = 'https://passport.bilibili.com/login'

    打开浏览器方法

    此方法用来打开浏览器,在进入登陆页面之后,自动输入用户名,密码。以及点击的登录按钮

    def open(self):
        """
        打开浏览器, 进入登陆界面
        输入用户名, 密码
        点击登陆
    
        :return: None
        """
        # 打开浏览器, 进入登陆界面
        self.browser.get(self.url)
    
        # 用户名输入框
        username_input_box = self.wait.until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="login-username"]'))
        )
        # 清空用户名输入框
        username_input_box.clear()
        # 将自己的用户名输入到用户名输入框
        username_input_box.send_keys(self.username)
    
        # 密码输入框
        password_input_box = self.wait.until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="login-passwd"]'))
        )
        # 清空密码输入框
        password_input_box.clear()
        # 将自己的密码输入到密码输入框
        password_input_box.send_keys(self.password)
    
        # 登录按钮
        login_button = self.wait.until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="geetest-wrap"]/ul/li[5]/a[1]'))
        )
        # 点击登录
        login_button.click()
        # 休眠, 让验证码图片加载出来
        time.sleep(2)

    拿极验验证码图片方法

    如何拿到极验验证码图片是我们进行模拟登录的关键一步,这里的极验验证码是由canvas绘制的两张图片,所有我们需要用js去获取图片。

    def get_geetest_image(self):
        """
        获取极验验证码图片
        :return: c_image(王者验证图) ic_image(有缺失的验证图)
        """
        """
        完整的验证图
        页面源码:
        <canvas class="geetest_canvas_fullbg geetest_fade geetest_absolute" 
        height="160" width="260" style="display: none;"></canvas>
        """
        # 执行js 拿到canvas画布里面的图片数据
        js = 'return document.getElementsByClassName("geetest_canvas_fullbg")[0].toDataURL("image/png");'
        # 图片数据
        complete_img_data = self.browser.execute_script(js)
        # base64 编码的图片信息
        complete_img_base64 = complete_img_data.split(',')[1]
        # 转成bytes类型
        complete_img = base64.b64decode(complete_img_base64)
        # 加载图片 return 回去对比
        c_image = Image.open(BytesIO(complete_img))
        # c_image.show()
        # 保存图片 (可不必保存)
        c_image.save('c_image.png')
    
        """
        有缺失的验证码图
    
        页面源码:
        <canvas class="geetest_canvas_bg geetest_absolute" height="160" width="260"></canvas>
        """
        # 执行js 拿到canvas画布里的图片数据
        js = 'return document.getElementsByClassName("geetest_canvas_bg")[0].toDataURL("image/png");'
        # 图片数据
        incomplete_img_data = self.browser.execute_script(js)
        # base64 编码的图片信息
        incomplete_img_base64 = incomplete_img_data.split(',')[1]
        # 转为bytes类型
        incomplete_img = base64.b64decode(incomplete_img_base64)
        # 直接加载图片 return 回去对比
        ic_image = Image.open(BytesIO(incomplete_img))
        # ic_image.show()
        # 保存图片(可不必保存)
        ic_image.save('ic_image.png')
    
        return c_image, ic_image

    # 对比像素点方法 和 获取移动距离方法

    这两个方法我们要将它们联系起来,我们通过对比图片横向和纵向的像素点,来确定两张图片是从哪里开始不同的。当然,我们只需要得知水平方向哪里开始不同的(滑块只需要在水平方向移动)

    def is_pixel_similar(self, c_image, ic_image, x, y):
        """
        比较两张图片的像素点
    
        注意: 像素点比较是有偏差的, 需要允许一定范围的误差,
        我们可以设置一个阈值
        :param ic_image:
        :param c_image:
        :param x:
        :param y:
        :return: 当像素点不相同时, 返回 False
        """
        # 获取两张图片执行位置的像素点
        c_pixel = c_image.load()[x, y]
        ic_pixel = ic_image.load()[x, y]
        # 阈值 允许误差
        threshold = 10
        # 对比
        if abs(c_pixel[0] - ic_pixel[0]) < threshold and \
        abs(c_pixel[1] - ic_pixel[1]) < threshold and \
        abs(c_pixel[2] - ic_pixel[2]) < threshold:
        return True
        return False
    
    def get_slice_gap(self, c_image, ic_image):
        """
        获取缺口的偏移量
    
        通过比较两张图片的所有像素点, 获取两张图片是从哪里开始不同
        从而得到 移动块 要在 x 方向移动的距离
    
        :param c_image: 完整的图片
        :param ic_image: 有缺失的图片
        :return: 缺口的偏移量
        """
        # ic_image.size:['width', 'height']
        for x in range(c_image.size[0]):
        for y in range(c_image.size[1]):
        if not self.is_pixel_similar(c_image, ic_image, x, y):
        # 移动块只在水平方向移动 只需返回 x
        return x

    拖动滑块方法

    然后就是拖动滑块了.

    def drag_slider(self, gap):
        """
        拖动滑块
    
        :param gap: 需要拖动的距离
        :return: None
        """
        slider = self.wait.until(
        EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div[2]/div[6]/div/div[1]/div[2]/div[2]'))
        )
        # 抓住滑块
        ActionChains(self.browser).click_and_hold(on_element=slider).perform()
        # 移动 只在水平方向上移动
        ActionChains(self.browser).move_by_offset(xoffset=gap, yoffset=0).perform()
        # 释放滑块
        ActionChains(self.browser).release().perform()

    由于对比像素点有一定的误差,不一定会一次成功,所有我们会需要一个循环来进行多次验证,在判断成功登录之后,才结束进程.

    判断是否登录

    def login_success(self):
        """
        判断是否登陆成功
        :return: 成功返回 True 失败返回False
        """
        try:
        # 登录成功后 界面上会有一个消息按钮
        return bool(
        WebDriverWait(self.browser, 5).until(EC.presence_of_element_located((By.XPATH, '//a[@title="消息"]')))
        )
        except TimeoutException:
        return False

    开始登录

    def login(self):
        """
        开始
    
        :return: None
        """
        # 打开浏览器, 输入账号 密码, 点击登陆
        self.open()
        # 获取验证图 ic_image(有缺失的验证图) c_image(完整的验证图)
        c_image, ic_image = self.get_geetest_image()
    
        # 获取缺口的偏移量
        gap = self.get_slice_gap(c_image, ic_image)
        print(f'缺口的偏移量为:{gap}')
        # 拖动滑块
        # TODO 这边一直有一定的误差 暂时用测量工具解决
        self.drag_slider(gap-8)
        time.sleep(3)
    
        if self.login_success():
        print('登陆成功')
        else:
        self.login()

    完整的代码

    class LoginBiliBili:
    
        def __init__(self, username, password):
            """
            初始化数据
    
            :param username: bilibili账号
            :param password: 密码
            """
            self.username = username
            self.password = password
            # 定义浏览器
            self.browser = webdriver.Chrome()
            # 定义显示等待
            self.wait = WebDriverWait(self.browser, 50)
            # bilibili登录url
            self.url = 'https://passport.bilibili.com/login'
    
        def open(self):
            """
            打开浏览器, 进入登陆界面
            输入用户名, 密码
            点击登陆
    
            :return: None
            """
            # 打开浏览器, 进入登陆界面
            self.browser.get(self.url)
    
            # 用户名输入框
            username_input_box = self.wait.until(
                EC.presence_of_element_located((By.XPATH, '//*[@id="login-username"]'))
            )
            # 清空用户名输入框
            username_input_box.clear()
            # 将自己的用户名输入到用户名输入框
            username_input_box.send_keys(self.username)
    
            # 密码输入框
            password_input_box = self.wait.until(
                EC.presence_of_element_located((By.XPATH, '//*[@id="login-passwd"]'))
            )
            # 清空密码输入框
            password_input_box.clear()
            # 将自己的密码输入到密码输入框
            password_input_box.send_keys(self.password)
    
            # 登录按钮
            login_button = self.wait.until(
                EC.presence_of_element_located((By.XPATH, '//*[@id="geetest-wrap"]/ul/li[5]/a[1]'))
            )
            # 点击登录
            login_button.click()
            # 休眠, 让验证码图片加载出来
            time.sleep(2)
    
        def get_geetest_image(self):
            """
            获取极验验证码图片
            :return: c_image(王者验证图) ic_image(有缺失的验证图)
            """
            """
            完整的验证图
            页面源码:
            <canvas class="geetest_canvas_fullbg geetest_fade geetest_absolute" 
            height="160" width="260" style="display: none;"></canvas>
            """
            # 执行js 拿到canvas画布里面的图片数据
            js = 'return document.getElementsByClassName("geetest_canvas_fullbg")[0].toDataURL("image/png");'
            # 图片数据
            complete_img_data = self.browser.execute_script(js)
            # base64 编码的图片信息
            complete_img_base64 = complete_img_data.split(',')[1]
            # 转成bytes类型
            complete_img = base64.b64decode(complete_img_base64)
            # 加载图片 return 回去对比
            c_image = Image.open(BytesIO(complete_img))
            # c_image.show()
            # 保存图片 (可不必保存)
            c_image.save('c_image.png')
    
            """
            有缺失的验证码图
    
            页面源码:
            <canvas class="geetest_canvas_bg geetest_absolute" height="160" width="260"></canvas>
            """
            # 执行js 拿到canvas画布里的图片数据
            js = 'return document.getElementsByClassName("geetest_canvas_bg")[0].toDataURL("image/png");'
            # 图片数据
            incomplete_img_data = self.browser.execute_script(js)
            # base64 编码的图片信息
            incomplete_img_base64 = incomplete_img_data.split(',')[1]
            # 转为bytes类型
            incomplete_img = base64.b64decode(incomplete_img_base64)
            # 直接加载图片 return 回去对比
            ic_image = Image.open(BytesIO(incomplete_img))
            # ic_image.show()
            # 保存图片(可不必保存)
            ic_image.save('ic_image.png')
    
            return c_image, ic_image
    
        def is_pixel_similar(self, c_image, ic_image, x, y):
            """
            比较两张图片的像素点
    
            注意: 像素点比较是有偏差的, 需要允许一定范围的误差,
                我们可以设置一个阈值
            :param ic_image:
            :param c_image:
            :param x:
            :param y:
            :return: 当像素点不相同时, 返回 False
            """
            # 获取两张图片执行位置的像素点
            c_pixel = c_image.load()[x, y]
            ic_pixel = ic_image.load()[x, y]
            # 阈值 允许误差
            threshold = 10
            # 对比
            if abs(c_pixel[0] - ic_pixel[0]) < threshold and \
                    abs(c_pixel[1] - ic_pixel[1]) < threshold and \
                    abs(c_pixel[2] - ic_pixel[2]) < threshold:
                return True
            return False
    
        def get_slice_gap(self, c_image, ic_image):
            """
            获取缺口的偏移量
    
            通过比较两张图片的所有像素点, 获取两张图片是从哪里开始不同
            从而得到 移动块 要在 x 方向移动的距离
    
            :param c_image: 完整的图片
            :param ic_image: 有缺失的图片
            :return: 缺口的偏移量
            """
            # ic_image.size:['width', 'height']
            for x in range(c_image.size[0]):
                for y in range(c_image.size[1]):
                    if not self.is_pixel_similar(c_image, ic_image, x, y):
                        # 移动块只在水平方向移动 只需返回 x
                        return x
    
        def drag_slider(self, gap):
            """
            拖动滑块
    
            :param gap: 需要拖动的距离
            :return: None
            """
            slider = self.wait.until(
                EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div[2]/div[6]/div/div[1]/div[2]/div[2]'))
            )
            # 抓住滑块
            ActionChains(self.browser).click_and_hold(on_element=slider).perform()
            # 移动 只在水平方向上移动
            ActionChains(self.browser).move_by_offset(xoffset=gap, yoffset=0).perform()
            # 释放滑块
            ActionChains(self.browser).release().perform()
    
        def login_success(self):
            """
            判断是否登陆成功
            :return: 成功返回 True 失败返回False
            """
            try:
                # 登录成功后 界面上会有一个消息按钮
                return bool(
                    WebDriverWait(self.browser, 5).until(EC.presence_of_element_located((By.XPATH, '//a[@title="消息"]')))
                )
            except TimeoutException:
                return False
    
        def login(self):
            """
            开始
    
            :return: None
            """
            # 打开浏览器, 输入账号 密码, 点击登陆
            self.open()
            # 获取验证图 ic_image(有缺失的验证图) c_image(完整的验证图)
            c_image, ic_image = self.get_geetest_image()
    
            # 获取缺口的偏移量
            gap = self.get_slice_gap(c_image, ic_image)
            print(f'缺口的偏移量为:{gap}')
            # 拖动滑块
            # TODO 这边一直有一定的误差 暂时用测量工具解决
            self.drag_slider(gap-8)
            time.sleep(3)
    
            if self.login_success():
                print('登陆成功')
            else:
                self.login()
    
    
    if __name__ == '__main__':
        login = LoginBiliBili('*******', '******')
        login.login()
    展开全文
  • Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它可以让你操作你的浏览器,让浏览器自动化的去做操作。点击按钮、输入文本、跳转等。 2、安装selenium 建议在虚拟环境中操作 pip install selenium ...
    1、什么是selenium

    selenium: 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它可以让你操作你的浏览器,让浏览器自动化的去做操作。点击按钮、输入文本、跳转等。

    2、安装selenium

    建议在虚拟环境中操作

    pip install selenium
    3、浏览器驱动

    例如: 通过selenium操作谷歌浏览器:
    下载操作谷歌浏览器驱动的页面
    http://chromedriver.storage.googleapis.com/index.html
    谷歌驱动和谷歌浏览器版本之间的映射表
    http://blog.csdn.net/huilan_same/article/details/51896672

    4、selenium定位元素的八种方法
    find_element_by_id                  通过id定位元素
    find_element_by_name                通过name定位元素
    find_element_by_xpath               通过xpath匹配定位元素
    find_element_by_link_text           通过链接link定位元素
    find_element_by_partial_link_text   通过超文本link定位元素
    find_element_by_tag_name            通过tag name就是标签名称定位元素如input p等
    find_element_by_class_name          通过classname定位元素
    find_element_by_css_selector        通过css定位元素
    
    #下面是查找多个元素(这些方法将返回一个列表):
    
    find_elements_by_name
    find_elements_by_xpath
    find_elements_by_link_text
    find_elements_by_partial_link_text
    find_elements_by_tag_name
    find_elements_by_class_name
    find_elements_by_css_selector

    实例:操作chrome浏览器设置百度显示图片为50张后,搜索美女图片并打开。

    from selenium import webdriver
    from time import sleep
    
    # 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
    driver = webdriver.Chrome(r'/home/aeasringnar/chromedriver')
    # 用get打开百度页面
    driver.get("http://www.baidu.com")
    # 查找页面的“设置”选项,并进行点击
    driver.find_elements_by_link_text('设置')[0].click()
    sleep(2)
    # 打开设置后找到“搜索设置”选项,设置为每页显示50条
    driver.find_elements_by_link_text('搜索设置')[0].click()
    sleep(2)
    m = driver.find_element_by_id('nr')
    sleep(2)
    # m.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
    m.find_element_by_xpath('.//option[3]').click()
    sleep(2)
    
    # 点击保存设置
    driver.find_elements_by_class_name("prefpanelgo")[0].click()
    sleep(2)
    
    # 处理弹出的警告页面   确定accept() 和 取消dismiss()
    driver.switch_to_alert().accept()
    sleep(2)
    # 找到百度的输入框,并输入 美女
    driver.find_element_by_id('kw').send_keys('美女')
    sleep(2)
    # 点击搜索按钮
    driver.find_element_by_id('su').click()
    sleep(2)
    # 搜索并打开第一个页面
    driver.find_elements_by_link_text('美女_百度图片')[0].click()
    sleep(2)
    
    # 关闭浏览器
    driver.quit()
    展开全文
  • 在做移动端页面自动化测试时,遇到了一个用...通过翻阅文档,我发现可以用selenium的TouchAction模拟用户在移动端的操作。TouchAction的文档地址:https://seleniumhq.github.io/selenium/docs/api/py/webdriver/s
  • 新浪微博用户模拟登录WebDriver基本元素定位方式xpath表达式定位selenium–操作滚动条driver.switch_to.frame用法Python代码实现 模拟登陆的思路: 1.采用webdriver的get方法打开网页 2.选择用密码进行登陆(定位+...
  • 导师给了个任务,在他所做的Web项目中爬取用户行为信息。 以前只爬取过百度的一些图片,还是比较简单的,一搜索也好多模板,但这次一做这个小任务才发现自己在这方面从来没深深研究过,有很多不足,爬取的内容、...
  • Python环境 3.6.1 本地URL链接文件 https://blog.csdn.net/fly910905/article/details/83418623 https://blog.csdn.net/fly910905/article/details/83417911 ...
  • Python爬虫与模拟登录

    2017-04-30 16:17:20
    借用cookie进行登录验证的原理一般情况用户使用浏览器进行登录操作,认证通过后服务器返回给用户一个cookie用来保存登录态。...我们首先将浏览器里复制到的cookie字符串进行处理,转化成为Python的字典
  • 在Android测试中最经常使用到的就是appium和selenium了 那么它们之间有什么区别呢? 1. selenium是web端的自动化 2. appium是app端的自动化 3. appium继承了webdriver,(也就是...模拟点击 输入帐号密码...
  • python脚本模拟浏览器

    千次阅读 2009-10-27 19:11:00
    (偶尔看到,怕忘了)仿用户打开浏览器然后点击等行为然后获取结果,以下是我使用过的方法只是依赖与ie不过firefox等应该也有相应的调用方法: 思路就是调用ie的com组件然后就是对dom的操作跟用javascript操作dom...
  • python爬虫实践之模拟登录

    千次阅读 2017-01-23 13:50:49
    python爬虫实践之模拟登录 有些网站设置了权限,只有在登录了之后才能爬取网站的内容,如何模拟登录,目前的方法主要是利用浏览器cookie模拟登录。 浏览器访问服务器的过程 在用户访问网页时...
  • 验证码处理之后就需要对处理的验证码进行识别训练,这里用Tesseract-ocr...这里需要你在需要登入的网站中提取大量的验证码图片,在获取图片时,查看网站的登入框是否在iframe标签中,已经图片是否有需要点击输入框...
  • 使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时...Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接、输入表单,点击按钮提交等。所以我们使用它可...
  • Python爬虫浏览器自动化模拟

    千次阅读 2018-09-22 14:43:26
    selenium可以模拟浏览器的点击、输入、验证、打开等操作,就像真实用户所操作的一样。下面我们就介绍一下selenium的具体使用方法。 安装 pip install selenium 此处我们使用火狐浏览器进行模...
  • Selenium是一个用于Web应用程序测试的工具,它可以在浏览器中运行,模拟用户真实的浏览网页操作,也就是说可以实现浏览器加载页面,搜索关键字和点击翻页等等操作,因此,就算使用了异步加载技术的网页,也可以模拟...
  • 所谓模拟登录,就是利用代码模拟浏览器网页中的操作,登录过程,在电脑端的浏览器中,需要用户输入用户名和密码,然后点击登录,登录成功则进入首页等,现在要将这一过程转换成代码操作,首先就需要了解点击登录那一...
  • 看到这一篇讲爬虫模拟登陆的文章,讲的非常清楚,转载自:http://www.2cto.com/kf/201401/275152.html ...在用户访问网页时,不论是通过URL输入域名或IP,还是点击链接,浏览器向WEB服务器发出了一个HTTP请求
  • 用户访问网页时,不论是通过URL输入域名或IP,还是点击链接,浏览器向WEB服务器发出了一个HTTP请求(HttpRequest),WEB服务器接收到客户端浏览器的请求之后,响应客户端的请求,发回相应的响应信息...
  • 依次模拟点击破解后的坐标并输入账户密码4.执行向右滑动的动作链三.源码及注释四.补充1.规避检测的用法2.隐藏浏览器的方法3.个人封装4.关于浏览器驱动5.关于超级鹰破解验证码的方法可以参考上一篇博文 一.简介...
  • 长轮询监听是否已经扫码并且点击确认 c. 如何进行会话保持 d. 如何获取用户列表 e. 如何发送消息(接收消息) 过程:访问微信官网[https://wx.qq.com/] --> 打开微信[已登录]扫一扫 --> ...
  • 云打码平台【处理各类验证码的平台】 注册:普通用户和开发者用户 登录: 登录普通用户(查看余额) 登录开发者用户: ...pythonHttp示例代码下载 ...一般点击登录按钮的请求都是post请求 ...
  • 自动化测试实战之ActionChains模拟用户行为 需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽 解决:selenium提供了一个类来处理这类事件 selenium.webdriver.common.action_chains....
  • robots协议 一些网站有着robots协议,规定着哪些内容爬虫不可以爬取,以亚马逊为例: 当然爬不爬取取决于爬虫本身 首先,我们要找到一个合适的请求头,举个例:"python-requests/...用爬虫模拟用户请求 import requ
  • 最近百度总爱做一些破坏用户信任度的事——文库金币变券、网盘限速,吓得我赶紧想办法把存在百度云音乐中的歌曲下载到本地。 http://yinyueyun.baidu.com/ 可问题是云音乐中并没有批量下载,而上面我总共存了700...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

python模拟用户点击

python 订阅