You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell调用Invoke-WebRequest访问西班牙签证网站遇403错误求助

解决PowerShell Invoke-WebRequest登录网站403错误的方法

403错误基本是网站反爬机制拦截了PowerShell的默认请求,试试下面这些实用方案:

  • 模拟浏览器请求头:多数网站会校验User-Agent字段,Invoke-WebRequest默认标识很容易被识别,换成Chrome的User-Agent即可,示例:

    $headers = @{
        "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
        "Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
        "Accept-Language" = "en-US,en;q=0.5"
    }
    
  • 先获取会话Cookie:直接POST登录请求会因缺少初始会话Cookie被拒绝,先GET登录页面拿到Cookie再发起登录:

    # 创建会话对象,保存登录前的Cookie
    $session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
    Invoke-WebRequest -Uri "https://uk.blsspainvisa.com/visa4spain/login" -WebSession $session -Headers $headers
    
    # 准备登录参数(字段要和网页表单一致,可通过Chrome开发者工具查看)
    $loginParams = @{
        "username" = "你的用户名"
        "password" = "你的密码"
        "__RequestVerificationToken" = $session.Cookies.GetCookies("https://uk.blsspainvisa.com")["__RequestVerificationToken"].Value
        # 按需添加其他必填字段,比如rememberMe等
    }
    
    # 发送登录请求
    $response = Invoke-WebRequest -Uri "https://uk.blsspainvisa.com/visa4spain/login" -Method Post -WebSession $session -Headers $headers -Body $loginParams
    
  • 核对表单字段完整性:打开Chrome开发者工具(F12)→ 网络标签,手动完成一次登录,找到POST请求的「表单数据」,确保PowerShell里的$loginParams包含所有必填项,尤其是CSRF令牌(通常名为__RequestVerificationToken)。

如果以上方法都失效,说明网站有更严格的反爬逻辑(比如需要JavaScript渲染),这时Invoke-WebRequest无法处理,可以尝试用Selenium PowerShell模块模拟真实浏览器操作。

内容的提问来源于stack exchange,提问作者why_boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:18:34