V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChatGPTPRO
V2EX  ›  程序员

请教大佬们:我用 selemium 爬虫这个网站,打开网页就报错 403forbidden

  •  
  •   ChatGPTPRO · 196 天前 · 2130 次点击
    这是一个创建于 196 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,大佬们

    https://moscow.online.lenta.com/

    这个网站,用 selemium 爬这个网站,driver.get 打开网页就报错 403forbidden

    有没有大佬教教小弟,感谢

    18 条回复    2023-10-15 12:13:04 +08:00
    youngce
        1
    youngce  
       196 天前
    chagtgpt3.5 如是说道:

    当使用 Selenium 访问网站时遇到 403 错误(禁止访问)通常是因为网站检测到了你的请求不是来自一个正常的浏览器用户,而是来自一个自动化脚本或机器人。为了解决这个问题,你可以考虑以下几种方法:

    1. **使用合适的 User-Agent**:User-Agent 是 HTTP 请求头中的一部分,它描述了你所使用的浏览器和操作系统。有时候,网站会检查 User-Agent ,如果它看起来像是来自一个爬虫或机器人的话,就会拒绝访问。你可以设置 User-Agent 来模仿一个正常的浏览器请求。

    ```python
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options

    options = Options()
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")

    driver = webdriver.Chrome(chrome_options=options)
    ```

    2. **使用代理**:使用代理服务器可以隐藏你的真实 IP 地址,有时可以帮助绕过 IP 封锁或访问限制。请注意,不要违反网站的使用政策或法律法规。

    3. **减慢请求速度**:有些网站可能会检测到你的请求速度过快,从而认定你是机器人。你可以在 Selenium 中添加等待时间,模拟人类的浏览行为。

    ```python
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    # 等待元素可见
    element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myElement"))
    )
    ```

    4. **使用 Selenium 的无头模式**:无头浏览器模式不会打开可见的浏览器窗口,这可能会降低被检测到的风险。

    ```python
    from selenium import webdriver

    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)
    ```

    5. **遵守网站的使用政策**:最重要的是确保你的爬虫或机器人不会滥用网站,遵守网站的使用政策和 Robots.txt 文件中的规则。

    请注意,网站可以随时更改其反爬虫措施,所以你可能需要不断调整你的策略以应对这些变化。同时,确保你的爬取是合法的,不会侵犯版权或隐私等法律法规。
    ChatGPTPRO
        2
    ChatGPTPRO  
    OP
       196 天前 via Android
    @youngce 感谢,但是其实我也问过 GPT 了,没啥用😂😂
    Rang666
        3
    Rang666  
       196 天前 via iPhone
    应该就是反爬了,看看正常的请求再看看 selenium 的请求对比一下呗
    ChatGPTPRO
        4
    ChatGPTPRO  
    OP
       196 天前
    @Rang666 反爬有方式解决吗 大佬
    zzNucker
        5
    zzNucker  
       196 天前
    @youngce 千万不要帖 gpt 回答的内容,你是想被封号吗
    ChatGPTPRO
        6
    ChatGPTPRO  
    OP
       196 天前
    @zzNucker 大佬 这个论坛不给贴吗?
    zzNucker
        7
    zzNucker  
       196 天前
    @ChatGPTPRO 不要贴 站长说过的
    ChatGPTPRO
        8
    ChatGPTPRO  
    OP
       196 天前
    @zzNucker 好的大佬 这个反爬咋弄你会吗
    zzNucker
        9
    zzNucker  
       196 天前
    一个个 header 对比,还不行就是 js 里加了探测了
    ShineyWang
        10
    ShineyWang  
       196 天前 via Android
    copy 请求的 curl
    导入到 postman 里面
    然后一个一个勾 header 就知道服务端判断哪些条件了

    测试成功后再导出成你要的语言代码即可
    chesha1
        11
    chesha1  
       196 天前
    我之前也遇到过类似问题,我已经把 chrome f12 生成的请求头复制成 curl ,所有 headers 全都写到爬虫里了,结果还是 403 ,不清楚什么原因
    testonly
        12
    testonly  
       196 天前
    对方直接侦查到你使用 selemium 吧。据我所知有些大站是可以做到的,这些站有没技术做到我不清楚了。

    @zzNucker 现在 GOOGLE 忙着反 AI ,大量 AI 内容可能会被 GOOGLE 惩罚,不知道是否是这原因。
    mmdsun
        13
    mmdsun  
       196 天前
    搜关键词:selemium 隐藏特征。记得有个开源脚本引入项目 selemium 特征就被隐藏没有了。
    among
        14
    among  
       196 天前
    ChicC
        15
    ChicC  
       196 天前
    window.navigator.webdriver
    shalingye
        16
    shalingye  
       196 天前 via Android
    @youngce 前几天有个 16 年的号和你一模一样,然后有人叫了站长,号就没了,尽管楼下都为他说情。
    MeteorVIP
        17
    MeteorVIP  
       195 天前 via iPhone
    你这个厉害,我只会用 uibot 获取网页上需要的内容
    flyqie
        18
    flyqie  
       195 天前 via Android
    @youngce #1

    以前有帮你百度,现在有帮你 GPT 。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1021 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:40 · PVG 02:40 · LAX 11:40 · JFK 14:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.