Giter Site home page Giter Site logo

abramovic / prebid-server Goto Github PK

View Code? Open in Web Editor NEW

This project forked from prebid/prebid-server

0.0 1.0 0.0 770 KB

Server side component to offload prebid processing to the cloud

License: Apache License 2.0

Go 99.64% Shell 0.13% HTML 0.23%

prebid-server's Introduction

Build Status

prebid-server

Server side component to offload prebid processing to the cloud

Discussion group for development / adapter testing

http://redditadops.slack.com channel headerbidding-dev

Current Status of Adapters (May 15, 2017)

Working on live sites:

  • AppNexus web

In testing:

  • Facebook web
  • Rubicon web

Under development / pending testing:

  • Pubmatic (waiting for clean & stable usersync endpoint and param compatibility with client-side prebid)
  • Index Exchange (waiting for stable endpoint)
  • PulsePoint (in code review)

How it works

The client (typically prebid.js) sends a JSON request to Prebid Server at /auction. See static/pbs_request.json for the format. Prebid Server forms OpenRTB requests, sends them to the appropriate adapters, concatenates the responses, and returns them to the client.

A few key points:

  • No ranking or decisioning is performed by Prebid Server. It just proxies requests.
  • No ad quality management (malware, viruses, deceptive creatives) is performed by Prebid Server
  • Prebid Server does no fraud scanning and does nothing to prevent bad traffic.

User synching

Prebid Server provides a /setuid endpoint that allows adapters to push in their user IDs. These are stored in a cookie named, creatively, uids. To see stored cookies, call /getuids. To set an optout cookie, call /optout. When an adapter doesn't have a synched cookie, a no_cookie response is returned with a usersync URL that the client should call via asynchronous pixel or equivalent. If Prebid Server doesn't have a cookie set, a preemptive no_cookie response is returned to allow the client to ask for user consent and drop a cookie.

Logging

Prebid Server does no server-side logging. It can stream metrics to an InfluxDB endpoint, which are aggregated as a time series. Prebid Server has no user profiling or user-data collection capabilities.

Usage

Without Docker

Prerequisites

Hosted version

AppNexus is hosting a version (generally bleeding-edge of this repo including some in-flight pull requests) at https://prebid.adnxs.com.

Getting

$ go get github.com/prebid/prebid-server

Running

To compile a binary and run locally:

$ go build .
$ ./prebid-server -v 1 -logtostderr

With Docker

Prerequisites

Compiling an alpine binary

The Dockerfile for prebid-server copies the binary in the root directory to the docker container, and must be specifically be compiled for the target architecture (alpine).

$ docker run --rm -v "$PWD":/go/src/github.com/prebid/prebid-server \
-w /go/src/github.com/prebid/prebid-server \
billyteves/alpine-golang-glide:1.2.0 \
/bin/bash -c 'glide install; go build -v'

The above command will run a container with the necessary dependencies (alpine, go 1.8, glide) and compile an alpine compatible binary.

Build prebid-server docker container

$ docker build -t prebid-server .

Run container

This command will run a prebid-server container in interactive mode and map the 8000 port to your machine's 8000 port so that you can visit http://localhost:8000 and see prebid-server's index page.

$ docker run --rm -it -p 8000:8000 prebid-server

Data integration

Prebid Server has three primary data objects that it needs to manage:

  • Accounts represent publishers, and are used for metrics aggregation and terms of service adherence. Requests without an active account will be rejected.
  • Domains are compared to the HTTP Referer header; all unknown/unapproved domains will be rejected.
  • Bundles are compared to the app.bundle value; all unknown/unapproved bundles will be rejected.
  • Configs are used for server-side configuration of adapters, primarily for use with mobile apps where managing configs client-side is ineffective.

Up Next

  • Limit adapters to one bid per ad unit
  • NURL support
  • Think through how deals work
  • Video
  • Native

prebid-server's People

Contributors

bokelley avatar asweeney86 avatar abramovic avatar anand-venkatraman avatar lestopher avatar ducchau avatar pdezwart avatar

Watchers

 avatar

prebid-server's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.