首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >搜索引擎如何立即检测到我的抓取器?

搜索引擎如何立即检测到我的抓取器?
EN

Stack Overflow用户
提问于 2020-10-07 21:49:22
回答 1查看 53关注 0票数 0

我正在使用Scrapy与Selenium,以便从一个特定的搜索引擎(ekoru)抓取urls。这是我从搜索引擎返回的响应的屏幕截图,只有一个请求:

因为我使用的是selenium,所以我假设我的用户代理应该是正常的,那么还有什么问题会让搜索引擎立即检测到机器人呢?

下面是我的代码:

代码语言:javascript
复制
class CompanyUrlSpider(scrapy.Spider):
    name = 'company_url'

    def start_requests(self):
        yield SeleniumRequest(
            url='https://ekoru.org',
            wait_time=3,
            screenshot=True,
            callback=self.parseEkoru
        )

def parseEkoru(self, response):
    driver = response.meta['driver']
    search_input = driver.find_element_by_xpath("//input[@id='fld_q']")
    search_input.send_keys('Hello World') 


    search_input.send_keys(Keys.ENTER)

    html = driver.page_source
    response_obj = Selector(text=html)

    links = response_obj.xpath("//div[@class='serp-result-web-title']/a")
    for link in links:
        yield {
            'ekoru_URL': link.xpath(".//@href").get()
        }
EN

回答 1

Stack Overflow用户

发布于 2020-10-08 01:44:33

有时你需要传递其他参数,以避免被任何网页检测到。

让我分享一个你可以使用的代码:

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

#This code helps to simulate a "human being" visiting the website
chrome_options = Options()
chrome_options.add_argument('--start-maximized')
driver = webdriver.Chrome(options=chrome_options, executable_path=r"chromedriver")
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": 
"""Object.defineProperty(navigator, 
'webdriver', {get: () => undefined})"""})

url = 'https://ekoru.org'
driver.get(url)

收益率(查看条形图地址下面的"Chrome正在被控制...“):

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64245471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档