Jina Reader是Dify中绕过Cloudflare等反爬限制、稳定读取JavaScript渲染网页的最轻量免部署方案;需在jina.ai获取API密钥并安全保存,再在Dify创建自定义工具并配置工作流调用,注意URL必须带协议且完整。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中稳定读取含Cloudflare、JavaScript渲染或IP限流等反爬限制的网页,必须绕过前端拦截并确保内容完整加载,Jina Reader是当前最轻量且免部署的可行方案——它已在服务端内置浏览器渲染与请求头伪装能力。
获取并安全保存Jina Reader API密钥
访问 jina.ai Dashboard,登录后进入“API Keys”页面,点击“Create new key”。【该密钥仅显示一次,关闭页面即永久丢失】。立即复制并粘贴到本地加密记事本或密码管理器中,不要暂存于剪贴板或未加密文本文件。
跳过此步会导致后续所有工具调用返回401错误,且Dify不提示具体失败原因。
在Dify中创建Jina Reader自定义工具
进入Dify控制台 → 左侧菜单栏点击“工具” → “自定义工具” → “创建自定义工具”。
在“OpenAPI规范”输入框中,粘贴以下已适配v1.2接口的JSON定义(含URI自动编码支持):
"openapi":"3.0.0","info":{"title":"Jina Reader","description":"将网页URL转换为干净Markdown文本。支持动态渲染页、含图页面及长文截断。","version":"1.2"},"servers":[{"url":"https://r.jina.ai"}],"paths":{"/{url}":{"get":{"operationId":"scrape_web_page","summary":"抓取并结构化网页内容","parameters":[{"name":"url","in":"path","description":"原始网页URL,必须为完整协议地址(如 https://example.com/article),会自动做URI编码","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"成功返回Markdown文本","content":{"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"URL格式错误或未提供"},"408":{"description":"网页加载超时(通常因目标站JS阻塞或反爬)"},"500":{"description":"Jina服务端内部错误"}}}}}}
填写工具名称为“Jina Reader”,描述留空,点击“创建”。
配置工作流节点调用Jina Reader
第一步:新建工作流,选择“工作流模式”,添加“开始”节点。
第二步:拖入“Jina Reader”工具节点,连接“开始”输出口至该节点输入口。
第三步:双击Jina Reader节点,在参数配置区找到“url”字段,点击右侧“+”号绑定变量 → 选择“用户输入” → 新建一个string类型变量,命名为“target_url”。
注意:此处【必须输入带http://或https://前缀的完整URL】,例如 https://news.ycombinator.com/item?id=39827123。若只填 news.ycombinator.com/item?id=39827123,会触发400错误且无明确提示。
第四步:添加“响应”节点,连接Jina Reader输出口至此节点,保存并调试。
验证与故障排查关键点
测试时输入一个已知含Cloudflare防护的网页(如 https://httpbin.org/delay/3),观察返回状态码和内容长度。若返回空内容或408错误,说明目标页JS加载耗时超过Jina默认超时阈值(约12秒),此时需改用本地化替代方案(如craw4ai+Flask封装)。
若返回400错误,检查URL是否含未编码的空格、中文或特殊符号;Jina Reader虽支持自动URI编码,但对原始URL中已损坏的编码序列(如 %u4F60)无法修复,必须人工修正后再传入。
成功返回的Markdown应包含标题、段落、列表、图片alt文字,且无导航栏、广告位、页脚等噪音内容——这是Jina服务端完成DOM清洗与语义提取的直接证据。


















