code: private HttpMessage prepareHttpMessage() throws HttpMalformedHeaderException, DatabaseException {
  		// Build fetch the request message from the database
  		HttpMessage msg;
  		try {
  			msg = reference.getHttpMessage();
  			// HistoryReference is about to be deleted, so no point keeping referencing it.
  			msg.setHistoryRef(null);
  		} finally {
  			deleteHistoryReference();
  		}
  
  		msg.getRequestHeader().setHeader(HttpHeader.IF_MODIFIED_SINCE, null);
  		msg.getRequestHeader().setHeader(HttpHeader.IF_NONE_MATCH, null);
  
  		// Check if there is a custom user agent
  		if (parent.getSpiderParam().getUserAgent() != null) {
  			msg.getRequestHeader().setHeader(HttpHeader.USER_AGENT, parent.getSpiderParam().getUserAgent());
  		}
  
  		// Check if there's a need to send the message from the point of view of a User
  		if (parent.getScanUser() != null) {
  			msg.setRequestingUser(parent.getScanUser());
  		}
  		return msg;
  	}
docs: Prepares the HTTP message to be sent to the target server.
  <p>
  The HTTP message is read from the database and set up with common headers (e.g. User-Agent) and properties (e.g. user).
  
  @return the HTTP message
  @throws HttpMalformedHeaderException if an error occurred while parsing the HTTP message read from the database
  @throws DatabaseException if an error occurred while reading the HTTP message from the database