请求对象

请求对象通过 splash:on_request 定义的回调函数接收, 它们也可以作为 response.request

属性

请求对象中用许多属性来描述HTTP请求的相关信息.这些字段仅仅作为一种信息,即使对他们进行修改也不会对最终发送的HTTP请求产生任何影响

request.url

请求的url

request.method

使用大写字母表示的请求的方法,例如 “GET”

request.headers

一个用Lua中table结构表示的HTTP的请求头(一个由名称到键值的映射);键值为响应头对应的名称, 值为响应头对应的值.

查询时是不区分大小写的,因此 request.headers['content-type']request.headers['Content-Type'] 是相同的.

request.info

它是一个lua中的table结构,以 HAR request 的格式来表示请求数据

方法

为了修改或者丢弃某个请求,您可以使用下面列举的 request 相关方法。请注意这些方法只有在请求发送之前有效 (如果一个请求已经被发送,那么修改它也就没有意义)。目前您只能在 splash:on_request <splash-on-request> 定义的回调函数中使用

request:abort

丢弃一个请求

原型: request:abort()

返回值: nil

是否异步:

request:enable_response_body

启用对响应内容的追踪(例如启用之后您可以使用 response.body )

原型: request:enable_response_body()

返回值: nil

是否异步:

splash.response_body_enabled 被设置为false时, 这个函数将会开启每个请求的响应内容追踪, 您可以在 splash:on_request <splash-on-request> 定义的回调函数中使用

request:set_url

修改请求的URL为用户指定的url

原型: request:set_url(url)

参数:

  • url: 一个请求的新的url

返回值: nil

是否异步:

request:set_proxy

在当前的请求中设置代理服务器的相关信息

原型: request:set_proxy{host, port, username=nil, password=nil, type='HTTP'}

参数:

  • host
  • port
  • username
  • password
  • type: 代理类型; 允许的类型有 ‘HTTP’ 和 ‘SOCKS5’.

返回值: nil

是否异步:

如果一个代理服务不需要进行认证,那么 usernamepassword 可以忽略

如果代理类型设置为 “HTTP” HTTPS的代理也能正常工作, 它是使用 CONNECT命令还实现的

request:set_timeout

您可以针对这个请求设置一个超时时间

原型: request:set_timeout(timeout)

参数:

  • timeout : 超时时间,单位为秒

返回值: nil

是否异步:

如果发生超时后,响应仍然没有接收完成,此时会丢弃请求。您可以参考: splash.resource_timeout

request:set_header

设置请求的请求头

原型: request:set_header(name, value)

参数:

  • name: 请求头的名称
  • value: 请求头的值

返回值: nil

是否异步:

您可以参考: splash:set_custom_headers