From a6c66568c8b59563b64f3ad3d2d4f4a36ec53004 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Mon, 19 Aug 2019 13:48:21 -0400 Subject: [PATCH] Pageview times experiment (#69) * experiment: track pageview times * strictly respect do not track * oops * asdfasdfasdf * add blogpost * fix typos oops --- ...geview-time-experiment-2019-08-19.markdown | 72 ++++++++++++++++++ cmd/site/main.go | 1 + cmd/site/pageview.go | 53 +++++++++++++ go.mod | 4 +- go.sum | 28 +------ scripts/docker.sh | 2 +- static/img/pageview_flowchart.png | Bin 0 -> 39421 bytes static/js/pageview_timer.js | 31 ++++++++ templates/blogpost.html | 9 ++- 9 files changed, 166 insertions(+), 34 deletions(-) create mode 100644 blog/pageview-time-experiment-2019-08-19.markdown create mode 100644 cmd/site/pageview.go create mode 100644 static/img/pageview_flowchart.png create mode 100644 static/js/pageview_timer.js diff --git a/blog/pageview-time-experiment-2019-08-19.markdown b/blog/pageview-time-experiment-2019-08-19.markdown new file mode 100644 index 0000000..ecb3b8d --- /dev/null +++ b/blog/pageview-time-experiment-2019-08-19.markdown @@ -0,0 +1,72 @@ +--- +title: Pageview Time Experiment +date: 2019-08-19 +--- + +# Pageview Time Experiment + +My blog has a lot of content in a lot of diverse categories. In order to help me +decide which kind of content I should publish next, I have created a very +simple method to track pageview time and enabled it for all of my blogposts. I'll +go into detail of how it works and potential risks of it below. + +The high level idea is that I want to be able to know what kind of content has +people's attention for the longest amount of time. I am using the time people +have the page open as a particularly terrible proxy for that value. I wanted to +make this data anonymous, simplistic and (reasonably) public. + +## How It Works + +Here is how it works: + +
![A diagram on how this works](/static/img/pageview_flowchart.png)
+ +When the page is loaded, a [javascript file records the start time](/static/js/pageview_timer.js). +This then sets a [pagehide handler](https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event) +to send a [navigator beacon](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon) +containing the following data: + +- The path of the page being viewed +- The start time +- The end time recorded by the pagehide handler + +This information is asynchronously pushed to [`/api/pageview-timer`](https://github.com/Xe/site/blob/91d7214b341088edba7a37a83a753e75ed02d7ad/cmd/site/pageview.go) +and added to an in-memory prometheus histogram. These histograms can be checked at +[`/metrics`](/metrics). This data is not permanently logged. + +## Security Concerns + +I believe this data is anonymous, simplistic and public for the following reasons: + +I believe this data is anonymous because there is no way for me to correlate users +to histogram entries, nor is there a way for me to view all of the raw histogram +entries. This site records the bare minimum for what I need in order to make sure +everything is functioning normally, and all data is stored in ephemeral in-memory +containers as much as possible. This includes any logs that my service produces. + +I believe this data is simplistic because it only has a start time, a stop time +and the path that is being looked at. This data doesn't take into account things +like people leaving a page open for hours on end idly, and that could skew the +numbers. The API endpoint is also fairly unprotected, meaning that falsified data +could be submitted to it easily. I think that this is okay though. + +I believe this data is public because I have the percentile views of the histograms +present on [`/metrics`](/metrics). I have no reason to hide this data, and I do not +intend to use it for any moneymaking purposes (though I doubt it could be to begin +with). + +I fully respect the [do not track](https://allaboutdnt.com) header and flag in browsers. +If [`pageview_timer.js`](/static/js/pageview_timer.js) detects the presence of +do not track in the browser, it stops running immediately and does not set the pagehide +handler. If that somehow fails, the server looks for the presence of the `DNT` header +set to `1` and instantly discards the data and replies with a 404. + +Like always, if you have any questions or concerns please reach out to me. I +want to ensure that I am creating useful views into how people use my blog +without violating people's rights to privacy. + +I intend to keep this up for at least a few weeks. If it doesn't have any practical +benefit in that timespan, I will disable this and post a follow-up explaining how +I believe it wasn't useful. + +Thanks and be well. diff --git a/cmd/site/main.go b/cmd/site/main.go index b7774b1..04d8bc4 100644 --- a/cmd/site/main.go +++ b/cmd/site/main.go @@ -223,6 +223,7 @@ func Build() (*Site, error) { w.Header().Set("Content-Type", "application/xml") _, _ = smi.WriteTo(w) }))) + s.mux.HandleFunc("/api/pageview-timer", handlePageViewTimer) return s, nil } diff --git a/cmd/site/pageview.go b/cmd/site/pageview.go new file mode 100644 index 0000000..5154659 --- /dev/null +++ b/cmd/site/pageview.go @@ -0,0 +1,53 @@ +package main + +import ( + "encoding/json" + "io/ioutil" + "net/http" + "time" + + "github.com/prometheus/client_golang/prometheus" + "within.website/ln" +) + +var ( + readTimes = prometheus.NewHistogramVec(prometheus.HistogramOpts{ + Name: "blogpage_read_times", + Help: "This tracks how much time people spend reading articles on my blog", + }, []string{"path"}) +) + +func init() { + _ = prometheus.Register(readTimes) +} + +func handlePageViewTimer(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("DNT") == "1" { + http.NotFound(w, r) + return + } + + data, err := ioutil.ReadAll(r.Body) + if err != nil { + ln.Error(r.Context(), err, ln.Info("while reading data")) + http.Error(w, "oopsie whoopsie uwu", http.StatusInternalServerError) + return + } + r.Body.Close() + + type metricsData struct { + Path string `json:"path"` + StartTime time.Time `json:"start_time"` + EndTime time.Time `json:"end_time"` + } + var md metricsData + err = json.Unmarshal(data, &md) + if err != nil { + http.NotFound(w, r) + return + } + + diff := md.EndTime.Sub(md.StartTime).Seconds() + + readTimes.WithLabelValues(md.Path).Observe(float64(diff)) +} diff --git a/go.mod b/go.mod index eb15ac7..6179c85 100644 --- a/go.mod +++ b/go.mod @@ -6,9 +6,7 @@ require ( github.com/kr/pretty v0.1.0 // indirect github.com/pkg/errors v0.8.1 // indirect github.com/povilasv/prommod v0.0.12 - github.com/prometheus/client_golang v0.9.4 - github.com/prometheus/common v0.4.1 // indirect - github.com/prometheus/procfs v0.0.0-20190523193104-a7aeb8df3389 // indirect + github.com/prometheus/client_golang v1.0.0 github.com/russross/blackfriday v2.0.0+incompatible github.com/sebest/xff v0.0.0-20160910043805-6c115e0ffa35 github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect diff --git a/go.sum b/go.sum index 037ce43..356c5d9 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -8,14 +7,11 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/celrenheit/sandflake v0.0.0-20190410195419-50a943690bc2 h1:/BpnZPo/sk1vPlt62dLya5KCn7PN9ZBDrpTGlQzgUZI= github.com/celrenheit/sandflake v0.0.0-20190410195419-50a943690bc2/go.mod h1:7L8gY0+4GYeBc9TvqVuDUq7tXuM6Sj7llnt7HkVwWlQ= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -37,40 +33,24 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/povilasv/prommod v0.0.11 h1:uiCU9z2UpNoMFyd5h3evJB8mTBuT9lZU3CYpMZkkyE0= -github.com/povilasv/prommod v0.0.11/go.mod h1:kMc6cpm22gp7m0cPEFRoRgIzXq75ZIJvNY6GbNu9EJk= github.com/povilasv/prommod v0.0.12 h1:0bk9QJ7kD6SmSsk9MeHhz5Qe6OpQl11Fvo7cvvmNUQM= github.com/povilasv/prommod v0.0.12/go.mod h1:GnuK7wLoVBwZXj8bhbJNx/xFSldy7Q49A44RJKNM8XQ= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v0.9.4 h1:Y8E/JaaPbmFSW2V81Ab/d8yZFYQQGbni1b1jPcG9Y6A= -github.com/prometheus/client_golang v0.9.4/go.mod h1:oCXIBxdI62A4cR6aTRJCgetEjecSIYzOEaeAn4iYEpM= github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190523193104-a7aeb8df3389 h1:F/k2nob1S9M6v5Xkq7KjSTQirOYaYQord0jR4TwyVmY= -github.com/prometheus/procfs v0.0.0-20190523193104-a7aeb8df3389/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT8YD6Td9ZMSU9APFcsk= github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/sebest/xff v0.0.0-20160910043805-6c115e0ffa35 h1:eajwn6K3weW5cd1ZXLu2sJ4pvwlBiCWY4uDejOr73gM= @@ -82,7 +62,6 @@ github.com/snabb/diagio v1.0.0 h1:kovhQ1rDXoEbmpf/T5N2sUp2iOdxEg+TcqzbYVHV2V0= github.com/snabb/diagio v1.0.0/go.mod h1:ZyGaWFhfBVqstGUw6laYetzeTwZ2xxVPqTALx1QQa1w= github.com/snabb/sitemap v1.0.0 h1:7vJeNPAaaj7fQSRS3WYuJHzUjdnhLdSLLpvVtnhbzC0= github.com/snabb/sitemap v1.0.0/go.mod h1:Id8uz1+WYdiNmSjEi4BIvL5UwNPYLsTHzRbjmDwNDzA= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -92,14 +71,13 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -109,9 +87,5 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -within.website/ln v0.5.2 h1:4pTM2wzpLjeZAputLf2U29HD79vcmdoEI/VPm2QEYgs= -within.website/ln v0.5.2/go.mod h1:ifURKqsCJekcsdUE+hyCdcuhQqQ+9v9DfA++ZqYxZFE= -within.website/ln v0.6.0 h1:zn8vE9f0biSTNIpHFc7kOPH+SitLsWrU1MfrwMSS4cM= -within.website/ln v0.6.0/go.mod h1:ifURKqsCJekcsdUE+hyCdcuhQqQ+9v9DfA++ZqYxZFE= within.website/ln v0.7.0 h1:cZUc53cZF/+hWuEAv1VbqlYJ5czuPFHKfH0hLKmlIUA= within.website/ln v0.7.0/go.mod h1:ifURKqsCJekcsdUE+hyCdcuhQqQ+9v9DfA++ZqYxZFE= diff --git a/scripts/docker.sh b/scripts/docker.sh index 8eb3c20..bb9d91a 100755 --- a/scripts/docker.sh +++ b/scripts/docker.sh @@ -3,4 +3,4 @@ set -e docker build -t xena/site . -exec docker run --rm -itp 5000:5000 -e PORT=5000 xena/site +exec docker run --rm -itp 5030:5000 -e PORT=5000 xena/site diff --git a/static/img/pageview_flowchart.png b/static/img/pageview_flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..99b1ee035921d9ecd0195ff21fa7d7f15f6961eb GIT binary patch literal 39421 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 + + + {{ end }}