如何绕过Selenium-webdriver的漫游器识别工具?

时间:2019-09-14 17:08:05

标签: python selenium selenium-webdriver bots

我正在尝试使用python-selenium为SoundCloud创建一个模仿机器人。 它将按照以下步骤操作:

  1. 登录
  2. 搜索输入的个人资料
  3. 列出输入的个人资料列表,例如曲目及其关注者。
  4. 然后它将喜欢那些曲目并关注那些人。

这不会成为垃圾邮件机器人,它将用于收集我感兴趣的配置文件的数据。

我可以自己做所有这一切,我最近刚开始遇到拒绝登录的提示,说“我们的机器人认为您是机器人。 尝试重新加载页面。如果您仍然遇到此问题,请访问我们的帮助中心。” 我该如何绕过呢?

这是我的代码(已缩短):

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

class SoundCloudBot:

    def __init__(self,username,password):
        self.username = username
        self.password =  password
        self.bot = webdriver.Firefox()

    def login(self):
        bot = self.bot
        bot.get('https://soundcloud.com/signin?redirect_url=/stream')
        time.sleep(3)
        email = bot.find_element_by_id('formControl_72')
        email.click()
        email.clear()
        email.send_keys(self.username)
        email.send_keys(Keys.RETURN)
        time.sleep(3)
        creds = bot.find_element_by_id('formControl_84')
        creds.send_keys(self.password)
        creds.send_keys(Keys.RETURN)

sync = SoundCloudBot('yourEmail', 'yourPassword')

sync.login()

2 个答案:

答案 0 :(得分:1)

我的建议对我大部分时间都有效,它可以使您的time.sleep变得随机。机器人正在跟上步伐,人类则更加不稳定。

您需要导入随机库

import random

然后,您更改时间,像这样睡觉:

time.sleep(random.randint(3,15))

答案 1 :(得分:0)

正如powerPixie所提到的,从战略上增加睡眠和等待以反映人类行为是一个不错的起点。尝试找到足够快的速度来触发机器人检测程序,然后再缓慢运行,以至于自动化仅比手动完成快一点。

我还知道,如果您在另一个标签上登录gmail / google,某些网站会禁用验证码或其他“我不是机器人”测试(不确定Soundcloud是否属于这种情况)。

由于Soundcloud像这样准备了一条错误消息,因此他们可能不希望人们在其站点上实现流程自动化,因此他们可能会遇到除您已经发现的问题之外的其他障碍。如果他们不想在自己的网站上使用漫游器,则最好尊重他们的请求,而不要从该网站获得IP禁止。