diff --git a/tests/InstagramTest.php b/tests/InstagramTest.php
index bcfd513..06779d3 100644
--- a/tests/InstagramTest.php
+++ b/tests/InstagramTest.php
@@ -36,10 +36,10 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
$this->assertContains('2017', $data['data']['category']);
$this->assertEquals('Kind of crazy to see the whole year laid out like this. #planning #2017', $data['data']['content']['text']);
$this->assertEquals(1, count($data['data']['photo']));
- $this->assertEquals(['https://instagram.fsea1-1.fna.fbcdn.net/vp/214e719b6026ef54e0545f2ed70d4c83/5B56795F/t51.2885-15/e35/15803256_1832278043695907_4846092951052353536_n.jpg'], $data['data']['photo']);
+ $this->assertEquals(['https://instagram.fsjc1-3.fna.fbcdn.net/vp/af9471f885e6197478d71807a7cbf297/5CBA6E5F/t51.2885-15/e35/15803256_1832278043695907_4846092951052353536_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net'], $data['data']['photo']);
$this->assertEquals('https://aaronparecki.com/', $data['data']['author']['url']);
$this->assertEquals('Aaron Parecki', $data['data']['author']['name']);
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/0dc6166cbd4ec6782453d36cd07fec06/5B67568E/t51.2885-19/s320x320/14240576_268350536897085_1129715662_a.jpg', $data['data']['author']['photo']);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/45aee453740a714bf408f8947f89da8e/5CCB4B8E/t51.2885-19/s320x320/14240576_268350536897085_1129715662_a.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['author']['photo']);
}
public function testBGDpqNoiMJ0() {
@@ -60,7 +60,7 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
'type' => 'card',
'name' => 'pk_spam',
'url' => 'https://aaronparecki.com/',
- 'photo' => 'https://instagram.fhel2-1.fna.fbcdn.net/vp/f17e1275a70fc32e93cbf434ddc32bcd/5B6CCC7A/t51.2885-19/11906329_960233084022564_1448528159_a.jpg',
+ 'photo' => 'https://scontent-frx5-1.cdninstagram.com/vp/74112f515c64726429c69fedcb927c2d/5CB64CF1/t51.2885-19/44884218_345707102882519_2446069589734326272_n.jpg?_nc_ht=scontent-frx5-1.cdninstagram.com',
'note' => 'My website is https://aaronparecki.com.dev/ and http://aaronpk.micro.blog/about/ and https://tiny.xyz.dev/'
], $data['data']['author']);
@@ -79,8 +79,8 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
'type' => 'card',
'name' => 'Burnside 26',
'url' => 'https://www.instagram.com/explore/locations/359000003/',
- 'latitude' => 45.5228640678,
- 'longitude' => -122.6389405085
+ 'latitude' => 45.52322,
+ 'longitude' => -122.63885
], $data['data']['refs']['https://www.instagram.com/explore/locations/359000003/']);
}
@@ -101,12 +101,12 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
$this->assertContains('100daysofmusic', $data['data']['category']);
$this->assertEquals('Day 18. Maple and Spruce #100daysofmusic #100daysproject #the100dayproject https://aaronparecki.com/2017/01/07/14/day18', $data['data']['content']['text']);
$this->assertEquals(1, count($data['data']['photo']));
- $this->assertEquals(['https://instagram.fsea1-1.fna.fbcdn.net/vp/32890db04701c4ab4fa7da05a6e9de93/5ADB9BDF/t51.2885-15/e15/15624670_548881701986735_8264383763249627136_n.jpg'], $data['data']['photo']);
+ $this->assertEquals(['https://instagram.fsjc1-3.fna.fbcdn.net/vp/a77f8672f977413d2eb5239cd6d5c4cf/5C3A4ADF/t51.2885-15/e15/15624670_548881701986735_8264383763249627136_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net'], $data['data']['photo']);
$this->assertEquals(1, count($data['data']['video']));
- $this->assertEquals(['https://instagram.fsea1-1.fna.fbcdn.net/vp/46c7118509146b978fb7bfc497eeb16f/5ADB639E/t50.2886-16/15921147_1074837002642259_2269307616507199488_n.mp4'], $data['data']['video']);
+ $this->assertEquals(['https://instagram.fsjc1-3.fna.fbcdn.net/vp/90ed8fe576cba16e258c0f4cfc05299a/5C3A129E/t50.2886-16/15921147_1074837002642259_2269307616507199488_n.mp4?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net'], $data['data']['video']);
$this->assertEquals('https://aaronparecki.com/', $data['data']['author']['url']);
$this->assertEquals('Aaron Parecki', $data['data']['author']['name']);
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/0dc6166cbd4ec6782453d36cd07fec06/5B67568E/t51.2885-19/s320x320/14240576_268350536897085_1129715662_a.jpg', $data['data']['author']['photo']);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/45aee453740a714bf408f8947f89da8e/5CCB4B8E/t51.2885-19/s320x320/14240576_268350536897085_1129715662_a.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['author']['photo']);
}
public function testInstagramPhotoWithPersonTag() {
@@ -122,9 +122,9 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('instagram', $data['source-format']);
$this->assertEquals(2, count($data['data']['category']));
- $this->assertContains('http://www.kmikeym.com/', $data['data']['category']);
- $this->assertArrayHasKey('http://www.kmikeym.com/', $data['data']['refs']);
- $this->assertEquals(['type'=>'card','name'=>'Mike Merrill','url'=>'http://www.kmikeym.com/','photo'=>'https://instagram.fsea1-1.fna.fbcdn.net/vp/dea521b3000a53d2d9a6845f5b066256/5B66D2FC/t51.2885-19/s320x320/20634957_814691788710973_2275383796935163904_a.jpg','note'=>'The world’s first Publicly Traded Person and working on things at @sandwichvideo'], $data['data']['refs']['http://www.kmikeym.com/']);
+ $this->assertEquals(['type'=>'card','name'=>'KmikeyM™️','url'=>'https://kmikeym.com/','photo'=>'https://instagram.fsjc1-3.fna.fbcdn.net/vp/ea5b988b616dbcc778b3013bf2426d70/5CCAC7FC/t51.2885-19/s320x320/20634957_814691788710973_2275383796935163904_a.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net','note'=>"The world’s first publicly traded person.\n•\nAcct in collaboration with @norbertoinc\n•\nBecome a shareholder today!\n•"], $data['data']['refs']['https://kmikeym.com/']);
+ $this->assertContains('https://kmikeym.com/', $data['data']['category']);
+ $this->assertArrayHasKey('https://kmikeym.com/', $data['data']['refs']);
}
public function testInstagramPhotoWithVenue() {
@@ -163,8 +163,8 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('instagram', $data['source-format']);
$this->assertEquals(2, count($data['data']['photo']));
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/406101ff9601ab78147e121b65ce3eea/5B5BC738/t51.2885-15/e35/21827424_134752690591737_8093088291252862976_n.jpg', $data['data']['photo'][0]);
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/03ddc8c03c8708439dae29663b8c2305/5B5EDE4D/t51.2885-15/e35/21909774_347707439021016_5237540582556958720_n.jpg', $data['data']['photo'][1]);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/6b09c3d5490ee3efb55849858a9ec014/5CBFBC38/t51.2885-15/e35/21827424_134752690591737_8093088291252862976_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['photo'][0]);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/8b1b2e6efa86a4856ec37a60f0fa77f5/5CC2D34D/t51.2885-15/e35/21909774_347707439021016_5237540582556958720_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['photo'][1]);
$this->assertArrayNotHasKey('video', $data['data']);
$this->assertEquals(2, count($data['data']['category']));
}
@@ -183,9 +183,9 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('photo', $data['data']['post-type']); // we discard videos in this case right now
$this->assertEquals(3, count($data['data']['photo']));
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/b0f6cd9dc4d5c3371efe9f412a0d7f0b/5B6BC5B8/t51.2885-15/e35/21878922_686481254874005_8468823712617988096_n.jpg', $data['data']['photo'][0]);
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/f8939cca504f97931fd4768b77d2c152/5ADB3CC9/t51.2885-15/e15/21910026_1507234999368159_6974261907783942144_n.jpg', $data['data']['photo'][1]);
- $this->assertEquals('https://instagram.fsea1-1.fna.fbcdn.net/vp/254c313bdcac37c19da5e10be8222a88/5B689788/t51.2885-15/e35/21878800_273567963151023_7672178549897297920_n.jpg', $data['data']['photo'][2]);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/ee1a28763918069f3e54dad35be24ad8/5CCFBAB8/t51.2885-15/e35/21878922_686481254874005_8468823712617988096_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['photo'][0]);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/ddc0ebe969bb1f9e6bf8adada0892c90/5C39EBC9/t51.2885-15/e15/21910026_1507234999368159_6974261907783942144_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['photo'][1]);
+ $this->assertEquals('https://instagram.fsjc1-3.fna.fbcdn.net/vp/bfe032af795427443ea448840df1c3a4/5CCC8C88/t51.2885-15/e35/21878800_273567963151023_7672178549897297920_n.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net', $data['data']['photo'][2]);
$this->assertArrayNotHasKey('video', $data['data']);
$this->assertEquals(2, count($data['data']['category']));
}
@@ -205,8 +205,8 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
'type' => 'card',
'name' => 'Aaron Parecki',
'url' => 'https://aaronparecki.com/',
- 'photo' => 'https://instagram.fsea1-1.fna.fbcdn.net/vp/0dc6166cbd4ec6782453d36cd07fec06/5B67568E/t51.2885-19/s320x320/14240576_268350536897085_1129715662_a.jpg',
- 'note' => '📡 w7apk.com 🔒 oauth.net 🎥 backpedal.tv 🎙 streampdx.com'
+ 'photo' => 'https://instagram.fsjc1-3.fna.fbcdn.net/vp/45aee453740a714bf408f8947f89da8e/5CCB4B8E/t51.2885-19/s320x320/14240576_268350536897085_1129715662_a.jpg?_nc_ht=instagram.fsjc1-3.fna.fbcdn.net',
+ 'note' => '🔒 oauth.net 🎥 backpedal.tv 🎙 streampdx.com 📡 w7apk.com'
], $data['data']);
}
@@ -225,7 +225,7 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
'type' => 'card',
'name' => 'pk_spam',
'url' => 'https://aaronparecki.com/',
- 'photo' => 'https://instagram.fhel2-1.fna.fbcdn.net/vp/f17e1275a70fc32e93cbf434ddc32bcd/5B6CCC7A/t51.2885-19/11906329_960233084022564_1448528159_a.jpg',
+ 'photo' => 'https://scontent-frx5-1.cdninstagram.com/vp/74112f515c64726429c69fedcb927c2d/5CB64CF1/t51.2885-19/44884218_345707102882519_2446069589734326272_n.jpg?_nc_ht=scontent-frx5-1.cdninstagram.com',
'note' => 'My website is https://aaronparecki.com.dev/ and http://aaronpk.micro.blog/about/ and https://tiny.xyz.dev/'
], $data['data']);
}
@@ -243,8 +243,8 @@ class InstagramTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('feed', $data['data']['type']);
$this->assertEquals(12, count($data['data']['items']));
- $this->assertEquals('https://www.instagram.com/p/Be0lBpGDncI/', $data['data']['items'][0]['url']);
- $this->assertEquals('https://www.instagram.com/p/BGC8l_ZCMKb/', $data['data']['items'][11]['url']);
+ $this->assertEquals('https://www.instagram.com/p/BsdlOmLh_IX/', $data['data']['items'][0]['url']);
+ $this->assertEquals('https://www.instagram.com/p/BGFdtAViMJy/', $data['data']['items'][11]['url']);
}
public function testInstagramPhotoWithAltText() {
diff --git a/tests/data/www.instagram.com/aaronpk_ b/tests/data/www.instagram.com/aaronpk_
index f73bb66..6ace579 100644
--- a/tests/data/www.instagram.com/aaronpk_
+++ b/tests/data/www.instagram.com/aaronpk_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:09 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:08:58 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=1fLyxWq5LePv4ZTaL7jxAfR6kNV5unMN; expires=Thu, 18-Apr-2019 17:08:58 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNKgAEAAE7eXSf7xQnvrrwSV_i; expires=Wed, 14-Apr-2038 17:08:58 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157738}:1f9D3K:xmZCstGKrR498cH--aylORQLiF4"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfET:KEbgZ2M9MXE_BmpTUiUwXmc1C7Y"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRTQAEAAHmtCUUKXPD6xfL2KKN; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:09 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:09 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=IOQ3tuosAyMxJWIuczdurkNhhbHWDDg3; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:09 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 47415
+Content-Length: 63710
-
+
+
@@ -28,83 +33,156 @@ Aaron Parecki (@aaronpk) • Instagram photos and videos
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
+
-
+
+
+
+
-
+
-
+
+
+
@@ -154,44 +232,81 @@ Aaron Parecki (@aaronpk) • Instagram photos and videos
-
-
-
-
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/explore_locations_109284789535230_ b/tests/data/www.instagram.com/explore_locations_109284789535230_
index 9719dd1..97cad04 100644
--- a/tests/data/www.instagram.com/explore_locations_109284789535230_
+++ b/tests/data/www.instagram.com/explore_locations_109284789535230_
@@ -1,107 +1,179 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:38 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:09:03 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=GVdghUKIAb3Cle5VVV1v0xQZCgtYJhet; expires=Thu, 18-Apr-2019 17:09:03 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNLgAEAAFR-o1Ezd5wG-b-bH-1; expires=Wed, 14-Apr-2038 17:09:03 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157742}:1f9D3P:XuJJOVsrdQZGjNvS8mhNEzZ3kEQ"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEw:Zrho3kCblfqpRBnPW1wRP55ED8s"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRaQAEAAHIfRJ0BM8F4thMSHKn; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:38 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:38 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=onHtyASna5Co5LS1n34AE6E4h1Hm0VbS; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:38 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 86269
+Content-Length: 105764
-
+
+
-XOXO Outpost • Instagram photos and videos
+XOXO Outpost on Instagram • Photos and Videos
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
+
-
+
-
+
+
@@ -151,44 +223,81 @@ XOXO Outpost • Instagram photos and videos
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/explore_locations_359000003_ b/tests/data/www.instagram.com/explore_locations_359000003_
index da8aa66..52187d5 100644
--- a/tests/data/www.instagram.com/explore_locations_359000003_
+++ b/tests/data/www.instagram.com/explore_locations_359000003_
@@ -1,107 +1,179 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:41 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:09:04 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=RJfuVnYJiURToNLFtGnlxJKA96YtIJ2u; expires=Thu, 18-Apr-2019 17:09:04 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNLwAEAAExll-wWTtqnH-bcYMX; expires=Wed, 14-Apr-2038 17:09:04 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157743}:1f9D3Q:oScsI1JtBDBn5rDycgRlkWVh68Q"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: mid=XDeRbAAEAAE1bMywvOoaEiuOxgSl; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:41 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEz:3wKu1OslQooDHQVB9l48-QQmmn4"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:41 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=nSPG6yUChjQdK9r8pBu1ekOeNhlP2lVA; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:41 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 84031
+Content-Length: 104576
-
+
+
-Burnside 26 • Instagram photos and videos
+Burnside 26 on Instagram • Photos and Videos
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
@@ -151,44 +223,81 @@ Burnside 26 • Instagram photos and videos
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/indiewebcat_ b/tests/data/www.instagram.com/indiewebcat_
index 74adf19..4df61ef 100644
--- a/tests/data/www.instagram.com/indiewebcat_
+++ b/tests/data/www.instagram.com/indiewebcat_
@@ -1,110 +1,192 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:11 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 16:31:55 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=hOD5GlRqGyYubYMpW3ExP8oZ9s3Qlwlq; expires=Thu, 18-Apr-2019 16:31:55 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjEewAEAAGDUs-cLgY3Ez6a9fYH; expires=Wed, 14-Apr-2038 16:31:55 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524155515}:1f9CTT:HhxQWFduenjCMPYt54vNlisZiNA"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: mid=XDeRTwAEAAHginklHSspUTKzWhjT; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:11 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEV:Rt89ZIdO939cibtdOrb9M7fLvOk"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:11 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=2VcQeMPKG6waJpQisIrMeQrxgDVDjW6P; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:11 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 47451
+Content-Length: 66623
-
+
+
Dora (@indiewebcat) • Instagram photos and videos
-
+
-
-
-
+
-
+
+
-
-
-
+
+
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
-
+
-
+
+
+
+
+
@@ -154,44 +236,81 @@ Dora (@indiewebcat) • Instagram photos and videos
-
+
+
+
-
+
+
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/data/www.instagram.com/kmikeym_ b/tests/data/www.instagram.com/kmikeym_
index 8a0d32a..3b9f29b 100644
--- a/tests/data/www.instagram.com/kmikeym_
+++ b/tests/data/www.instagram.com/kmikeym_
@@ -1,110 +1,192 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:14 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 16:32:15 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=uoWFVVKfmoV9Z2QLrT7dV8JCruWG1QJB; expires=Thu, 18-Apr-2019 16:32:15 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjEjwAEAAEoYRfKbWGShqGWduH2; expires=Wed, 14-Apr-2038 16:32:15 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524155535}:1f9CTn:lVEaa1wmnUA7uLcTlHbjOajse-0"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: mid=XDeRUgAEAAF7oFTO68Wf7_ZrYhPp; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:14 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEY:JoMs879m8nOA_JvffoEBMxn9qvc"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:14 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=SEPGSA8YCB9ckMmvPVLDjqbj0G3Ssxjf; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:14 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 49368
+Content-Length: 56963
-
+
+
-Mike Merrill (@kmikeym) • Instagram photos and videos
+KmikeyM™️ (@kmikeym) • Instagram photos and videos
-
+
-
-
-
+
-
+
+
-
-
-
+
+
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
@@ -154,44 +236,81 @@ Mike Merrill (@kmikeym) • Instagram photos and videos
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/data/www.instagram.com/microformats_ b/tests/data/www.instagram.com/microformats_
index d599873..ef70b27 100644
--- a/tests/data/www.instagram.com/microformats_
+++ b/tests/data/www.instagram.com/microformats_
@@ -1,110 +1,192 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:16 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 16:32:25 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=dzL8PSEWcKKXk7mdLpo9GqPWzDlYf8mF; expires=Thu, 18-Apr-2019 16:32:25 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjEmQAEAAHv2_BMwKTQbRTyJZPa; expires=Wed, 14-Apr-2038 16:32:25 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524155545}:1f9CTx:hXArj8O4Qyxrw-ZKRk2fcv8wSkQ"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: mid=XDeRVAAEAAFYa87b9FVDxn7T54n8; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:16 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEa:Sk6tRDTp7FAM6grsCt11qngeP-I"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:16 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=ezVJs93GiaGzIlBw6ke2dTzrGZJMORx6; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:16 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 22220
+Content-Length: 33979
-
+
+
@microformats • Instagram photos and videos
-
+
-
-
-
+
-
+
+
-
-
-
+
+
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
-
+
-
+
+
+
+
+
@@ -154,44 +236,81 @@ Content-Length: 22220
-
-
+
+
-
-
-
-
-
+
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/data/www.instagram.com/p_BGDpqNoiMJ0_ b/tests/data/www.instagram.com/p_BGDpqNoiMJ0_
index d135ead..8284952 100644
--- a/tests/data/www.instagram.com/p_BGDpqNoiMJ0_
+++ b/tests/data/www.instagram.com/p_BGDpqNoiMJ0_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:23 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:08:59 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=omsF0c31sG8fuvNlX6SHhC0eHz6s45dd; expires=Thu, 18-Apr-2019 17:08:59 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNKwAEAAF8rBKgfs5vNJbgWyTA; expires=Wed, 14-Apr-2038 17:08:59 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157739}:1f9D3L:DHIxu9xxU__1P75mGbvwsTSrKZA"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: mid=XDeRWwAEAAEtad-PZiH-LfIuttoC; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:23 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEh:FSM6XcxaV1AwOzgNFxJxnYVeoM4"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:23 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=z3NYvbLvqlx0nJ3ZyBsE3b6mQIDbOUlu; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:23 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 23116
+Content-Length: 34928
-
+
+
@@ -28,74 +33,140 @@ Content-Length: 23116
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -112,6 +183,10 @@ Content-Length: 23116
+
+
@@ -161,44 +236,81 @@ Content-Length: 23116
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BN3Z5salSys_ b/tests/data/www.instagram.com/p_BN3Z5salSys_
index e371f4b..34f0c10 100644
--- a/tests/data/www.instagram.com/p_BN3Z5salSys_
+++ b/tests/data/www.instagram.com/p_BN3Z5salSys_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:30 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:09:00 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=kekMKrh0B8Dm29KmPp7a5LEiN2Wnh66F; expires=Thu, 18-Apr-2019 17:09:00 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNLAAEAAHdOsU2pIfQIwFRH8QE; expires=Wed, 14-Apr-2038 17:09:00 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157740}:1f9D3M:ttLFXwpSXd9yd4TDHnhDHdewPJk"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRYgAEAAEgKff_6RtCHX0fIcfG; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:30 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEo:SUAJwpCs99oHHTky_5f_6lXNKzw"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:30 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=gBEa8QEBGkSeaNGH4fGKnSEFF1yZeGpD; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:30 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 25358
+Content-Length: 36306
-
+
+
@@ -28,74 +33,140 @@ Aaron Parecki on Instagram: “Super thrilled about the launch of our podcast st
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -112,6 +183,10 @@ Aaron Parecki on Instagram: “Super thrilled about the launch of our podcast st
+
+
@@ -161,44 +236,81 @@ Aaron Parecki on Instagram: “Super thrilled about the launch of our podcast st
-
+
+
+
+
+
-
-
-
-
-
+
-
-
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BNfqVfVlmkj_ b/tests/data/www.instagram.com/p_BNfqVfVlmkj_
index 8d5671a..e8d40d4 100644
--- a/tests/data/www.instagram.com/p_BNfqVfVlmkj_
+++ b/tests/data/www.instagram.com/p_BNfqVfVlmkj_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:28 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:09:00 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=g97L5l6jFKZBAiG7ChhVKNqHigTxJT6r; expires=Thu, 18-Apr-2019 17:09:00 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNLAAEAAEPmILc-DBRBBMY8JwE; expires=Wed, 14-Apr-2038 17:09:00 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157740}:1f9D3M:ttLFXwpSXd9yd4TDHnhDHdewPJk"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: mid=XDeRYAAEAAHxlVcLKJ2sbtQzFCZX; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:28 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEm:COLhSHYz_bKqkZsIC9w7OF6OYjs"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:28 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=jn2PWTjhc7r9d6XvQMrdDdeXuLdCxgg3; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:28 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 23674
+Content-Length: 33749
-
+
+
@@ -28,74 +33,140 @@ Aaron Parecki on Instagram: “Streaming the #kmikeym shareholder meeting!”
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -112,6 +183,10 @@ Aaron Parecki on Instagram: “Streaming the #kmikeym shareholder meeting!”
+
+
@@ -161,44 +236,81 @@ Aaron Parecki on Instagram: “Streaming the #kmikeym shareholder meeting!”
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BO5rYVElvJq_ b/tests/data/www.instagram.com/p_BO5rYVElvJq_
index ba89ddf..12003cb 100644
--- a/tests/data/www.instagram.com/p_BO5rYVElvJq_
+++ b/tests/data/www.instagram.com/p_BO5rYVElvJq_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:21 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:08:59 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=uHmZZLHgyRJmFZcEyi99uQOGZfosBlz8; expires=Thu, 18-Apr-2019 17:08:59 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNKwAEAAGc_kiynqxElBtSXD_n; expires=Wed, 14-Apr-2038 17:08:59 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157739}:1f9D3L:DHIxu9xxU__1P75mGbvwsTSrKZA"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEf:3FfukxjqM2IKU2wWTrWL03dPYUg"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRWQAEAAFgl_yvYPGRIAXLsocG; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:21 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:21 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=qPuCyvERpxY9wVbwJP8ndmVE0u7qjqZE; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:21 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 24757
+Content-Length: 34750
-
+
+
@@ -28,74 +33,140 @@ Aaron Parecki on Instagram: “Kind of crazy to see the whole year laid out like
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -108,10 +179,14 @@ Aaron Parecki on Instagram: “Kind of crazy to see the whole year laid out like
-
+
+
+
@@ -161,44 +236,81 @@ Aaron Parecki on Instagram: “Kind of crazy to see the whole year laid out like
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BO_RN8AFZSx_ b/tests/data/www.instagram.com/p_BO_RN8AFZSx_
index 52b82bf..5e2dbfd 100644
--- a/tests/data/www.instagram.com/p_BO_RN8AFZSx_
+++ b/tests/data/www.instagram.com/p_BO_RN8AFZSx_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:26 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:08:59 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=s2V8S89WpOOsItE5agDkksiLAvXt4en1; expires=Thu, 18-Apr-2019 17:08:59 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNKwAEAAEP80f3tI40VpDh8Tn2; expires=Wed, 14-Apr-2038 17:08:59 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157739}:1f9D3L:DHIxu9xxU__1P75mGbvwsTSrKZA"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEk:CMpnbQJqlwVL8ZC_DNO4hay-4wE"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRXQAEAAGI0Dwi4MSFsX7ZlcQb; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:26 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:26 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=Y2wGO5etEx24WF165IPhKsRNWlVpYbbL; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:26 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 23674
+Content-Length: 35288
-
+
+
@@ -28,74 +33,140 @@ Aaron Parecki on Instagram: “Day 18. Maple and Spruce #100daysofmusic #100days
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -108,15 +179,19 @@ Aaron Parecki on Instagram: “Day 18. Maple and Spruce #100daysofmusic #100days
-
-
+
+
-
+
+
+
@@ -166,44 +241,81 @@ Aaron Parecki on Instagram: “Day 18. Maple and Spruce #100daysofmusic #100days
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
+
-
-
+
-
-
-
-
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BZWmUB_DVtp_ b/tests/data/www.instagram.com/p_BZWmUB_DVtp_
index 5f65599..859bd81 100644
--- a/tests/data/www.instagram.com/p_BZWmUB_DVtp_
+++ b/tests/data/www.instagram.com/p_BZWmUB_DVtp_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:33 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:09:01 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=NgFgkpZrJzKgybQLIP8v1sERAf3AN0uN; expires=Thu, 18-Apr-2019 17:09:01 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNLQAEAAHJlsi8mxhVHQsGN8S4; expires=Wed, 14-Apr-2038 17:09:01 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157741}:1f9D3N:HmTpuWrlulVcLdISf9xgViZ12zg"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEr:7FA5vdwr0XWX5B9nfyC8-BEXCP4"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRZQAEAAEdXp4u8v_oLKl5Fu0J; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:33 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:33 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=1tbwWnNlz4fyLZ7h6jPplWJ2vlpPDshm; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:33 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 24945
+Content-Length: 38539
-
+
+
@@ -28,74 +33,140 @@ Content-Length: 24945
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -112,6 +183,10 @@ Content-Length: 24945
+
+
@@ -161,44 +236,81 @@ Content-Length: 24945
+
+
+
+
-
+
+
-
-
-
+
+
+
-
+
-
-
+
-
-
-
-
-
-
-
+
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BZWmpecjBwN_ b/tests/data/www.instagram.com/p_BZWmpecjBwN_
index 1c39f85..ad8c3e9 100644
--- a/tests/data/www.instagram.com/p_BZWmpecjBwN_
+++ b/tests/data/www.instagram.com/p_BZWmpecjBwN_
@@ -1,23 +1,28 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:35 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 17:09:01 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=k6k91iIsyxbo8w5OJT2bphbPo8OXGM76; expires=Thu, 18-Apr-2019 17:09:01 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjNLQAEAAFmnafDuq8KGeSZqcOd; expires=Wed, 14-Apr-2038 17:09:01 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524157741}:1f9D3N:HmTpuWrlulVcLdISf9xgViZ12zg"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEt:UjYdmkV-_el6KPg7Cs6-kI2cBDM"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRZwAEAAEw2JOOWcyaCaYTUyXi; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:35 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:35 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=QMRPKFV88uqB7dCMZtfy9IHFxWJMG6g5; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:35 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 26892
+Content-Length: 40394
-
+
+
@@ -28,74 +33,140 @@ Content-Length: 26892
-
-
-
+
+
-
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
-
-
+
+
@@ -112,6 +183,10 @@ Content-Length: 26892
+
+
@@ -161,44 +236,81 @@ Content-Length: 26892
-
-
-
-
+
+
-
+
+
+
+
+
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/tests/data/www.instagram.com/p_BsdjKytBZyx_ b/tests/data/www.instagram.com/p_BsdjKytBZyx_
index 56cfabe..94aa65b 100644
--- a/tests/data/www.instagram.com/p_BsdjKytBZyx_
+++ b/tests/data/www.instagram.com/p_BsdjKytBZyx_
@@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Language, Cookie, Accept-Encoding
Content-Language: en
-Date: Thu, 10 Jan 2019 17:08:15 GMT
+Date: Thu, 10 Jan 2019 18:39:44 GMT
Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
@@ -11,13 +11,13 @@ X-Frame-Options: SAMEORIGIN
content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
-Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghdoV:im6UK2FX8I1TlHIiI_iwXYjDRKU"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRcAAEAAFXCkGoC_qfrvCdRyFn; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:44 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfF2:CTXqJSA1V33HDwK6tJ-lhYSJQyI"; Domain=.instagram.com; HttpOnly; Path=/; Secure
Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
-Set-Cookie: mid=XDd7_wAEAAH4otGp9D4ALT_YzT6J; Domain=.instagram.com; expires=Sun, 07-Jan-2029 17:08:15 GMT; Max-Age=315360000; Path=/; Secure
-Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 17:08:15 GMT; Max-Age=315360000; Path=/; Secure
-Set-Cookie: csrftoken=nrcJcaKDOujTgj4650qHTzdT1eEYD3oD; Domain=.instagram.com; expires=Thu, 09-Jan-2020 17:08:15 GMT; Max-Age=31449600; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:44 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=tOzYD3M0zNc2Pfn4mrmcLmBO69WWUwZ0; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:44 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 32865
+Content-Length: 32922
@@ -236,25 +236,25 @@ a):g(c,a)}}var e={passive:!0,capture:!0},h=["click","mousedown","keydown","touch
-
-
-
+
-
-
+
-
-
-
-
-
+
-
-
+
+
+
+
-
+
+
+
+
+
+
@@ -264,7 +264,7 @@ a):g(c,a)}}var e={passive:!0,capture:!0},h=["click","mousedown","keydown","touch
-
+
diff --git a/tests/data/www.instagram.com/p_BsdlOmLh_IX_ b/tests/data/www.instagram.com/p_BsdlOmLh_IX_
index a80cd0d..dd64ce0 100644
--- a/tests/data/www.instagram.com/p_BsdlOmLh_IX_
+++ b/tests/data/www.instagram.com/p_BsdlOmLh_IX_
@@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Language, Cookie, Accept-Encoding
Content-Language: en
-Date: Thu, 10 Jan 2019 18:11:48 GMT
+Date: Thu, 10 Jan 2019 18:39:46 GMT
Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
@@ -11,13 +11,13 @@ X-Frame-Options: SAMEORIGIN
content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
-Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1gheo0:HTp4zLA7oQExYE5gEPmQHl9b_YE"; Domain=.instagram.com; HttpOnly; Path=/; Secure
-Set-Cookie: mid=XDeK5AAEAAEJlizJo249TbqNAGlf; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:11:48 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfF4:DaNIwTxtPN2sXTcJ3Gj1J2XK8OU"; Domain=.instagram.com; HttpOnly; Path=/; Secure
Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
-Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:11:48 GMT; Max-Age=315360000; Path=/; Secure
-Set-Cookie: csrftoken=xsUzwhNqgtwmqGk24MQRlBJG8xzIl3AS; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:11:48 GMT; Max-Age=31449600; Path=/; Secure
+Set-Cookie: mid=XDeRcgAEAAERmKP3pKqZ02n4zJvn; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:46 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:46 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=BhnSMXtLPNIypS1PoAD57VWTnLH1t4CA; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:46 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 36257
+Content-Length: 36322
@@ -236,25 +236,25 @@ a):g(c,a)}}var e={passive:!0,capture:!0},h=["click","mousedown","keydown","touch
-
+
-
-
+
+
+
-
-
+
-
+
-
-
-
+
-
-
+
+
+
+
-
+
@@ -264,7 +264,7 @@ a):g(c,a)}}var e={passive:!0,capture:!0},h=["click","mousedown","keydown","touch
-
+
diff --git a/tests/data/www.instagram.com/pk_spam_ b/tests/data/www.instagram.com/pk_spam_
index 435ad15..1171f8b 100644
--- a/tests/data/www.instagram.com/pk_spam_
+++ b/tests/data/www.instagram.com/pk_spam_
@@ -1,110 +1,192 @@
HTTP/1.1 200 OK
-Content-Type: text/html
-X-Frame-Options: SAMEORIGIN
+Content-Type: text/html; charset=utf-8
+Vary: Accept-Language, Cookie, Accept-Encoding
+Content-Language: en
+Date: Thu, 10 Jan 2019 18:39:19 GMT
+Strict-Transport-Security: max-age=3600
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
-Vary: Cookie, Accept-Language, Accept-Encoding
-Content-Language: en
-Date: Thu, 19 Apr 2018 16:24:21 GMT
-Strict-Transport-Security: max-age=86400
-Set-Cookie: rur=FRC; Path=/
-Set-Cookie: csrftoken=UyFO1McAfsu1Gg64YNRzVZeylsCOrq14; expires=Thu, 18-Apr-2019 16:24:21 GMT; Max-Age=31449600; Path=/; Secure
-Set-Cookie: mid=WtjCtAAEAAEd7Fiw2ZRWJolZOhIl; expires=Wed, 14-Apr-2038 16:24:21 GMT; Max-Age=630720000; Path=/
-Set-Cookie: urlgen="{\"time\": 1524155060}:1f9CM9:GWUmrZMWpMorv9hgPR8lzXPmPO4"; Path=/
+X-Frame-Options: SAMEORIGIN
+content-security-policy: report-uri https://www.instagram.com/security/csp_report/; default-src 'self' https://www.instagram.com; img-src https: data: blob:; font-src https: data:; media-src 'self' blob: https://www.instagram.com https://*.cdninstagram.com https://*.fbcdn.net; manifest-src 'self' https://www.instagram.com; script-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net 'unsafe-inline' 'unsafe-eval' blob:; style-src 'self' https://*.www.instagram.com https://www.instagram.com 'unsafe-inline'; connect-src 'self' https://instagram.com https://www.instagram.com https://*.www.instagram.com https://graph.instagram.com https://*.graph.instagram.com https://*.cdninstagram.com https://api.instagram.com wss://www.instagram.com wss://edge-chat.instagram.com https://*.facebook.com https://*.fbcdn.net https://*.facebook.net chrome-extension://boadgeojelhgndaghljhdicfkmllpafd; worker-src 'self' https://www.instagram.com; frame-src 'self' https://instagram.com https://www.instagram.com https://staticxx.facebook.com https://www.facebook.com https://web.facebook.com https://connect.facebook.net https://m.facebook.com; object-src 'none'; upgrade-insecure-requests
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 0
+Set-Cookie: rur=PRN; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: urlgen="{\"108.161.19.190\": 54154}:1ghfEd:_3iFGSS6jc4J7NZAI5kjGipgvgU"; Domain=.instagram.com; HttpOnly; Path=/; Secure
+Set-Cookie: mid=XDeRVgAEAAHu_1vK6bJWo60YJPFD; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:19 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: mcd=3; Domain=.instagram.com; expires=Sun, 07-Jan-2029 18:39:19 GMT; Max-Age=315360000; Path=/; Secure
+Set-Cookie: csrftoken=BYZ3MAAFYWZhLCYnNSWHNvHZsb8sklnh; Domain=.instagram.com; expires=Thu, 09-Jan-2020 18:39:19 GMT; Max-Age=31449600; Path=/; Secure
Connection: keep-alive
-Content-Length: 46256
+Content-Length: 61661
-
+
+
@pk_spam • Instagram photos and videos
-
+
-
-
-
+
-
+
+
-
-
-
+
+
+ var docElement = document.documentElement;
+ var classRE = new RegExp('(^|\\s)no-js(\\s|$)');
+ var className = docElement.className;
+ docElement.className = className.replace(classRE, '$1js$2');
+})();
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+(function() {
+
+ if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
+ window.__bufferedPerformance = [];
+ var ob = new PerformanceObserver(function(e) {
+ window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
+ });
+ ob.observe({entryTypes:['paint']});
+ }
+ window.__bufferedErrors = [];
+ window.onerror = function(message, url, line, column, error) {
+ window.__bufferedErrors.push({
+ message: message,
+ url: url,
+ line: line,
+ column: column,
+ error: error
+ });
+ return false;
+ };
+ window.__initialData = {
+ pending: true,
+ waiting: []
+ };
+ function notifyLoaded(item, data) {
+ item.pending = false;
+ item.data = data;
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].resolve(item.data);
+ }
+ item.waiting = [];
+ }
+ function notifyError(item, msg) {
+ item.pending = false;
+ item.error = new Error(msg);
+ for (var i = 0;i < item.waiting.length; ++i) {
+ item.waiting[i].reject(item.error);
+ }
+ item.waiting = [];
+ }
+ window.__initialDataLoaded = function(initialData) {
+ notifyLoaded(window.__initialData, initialData);
+ };
+ window.__initialDataError = function(msg) {
+ notifyError(window.__initialData, msg);
+ };
+ window.__additionalData = {};
+ window.__pendingAdditionalData = function(paths) {
+ for (var i = 0;i < paths.length; ++i) {
+ window.__additionalData[paths[i]] = {
+ pending: true,
+ waiting: []
+ };
+ }
+ };
+ window.__additionalDataLoaded = function(path, data) {
+ if (path in window.__additionalData) {
+ notifyLoaded(window.__additionalData[path], data);
+ } else {
+ console.error('Unexpected additional data loaded "' + path + '"');
+ }
+ };
+ window.__additionalDataError = function(path, msg) {
+ if (path in window.__additionalData) {
+ notifyError(window.__additionalData[path], msg);
+ } else {
+ console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
+ }
+ };
+})();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
-
+
-
+
+
+
+
+
@@ -154,44 +236,81 @@ Content-Length: 46256
-
+
-
-
-
-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/download-instagram-data.sh b/tests/download-instagram-data.sh
index 506df0a..301752b 100755
--- a/tests/download-instagram-data.sh
+++ b/tests/download-instagram-data.sh
@@ -2,6 +2,10 @@
urls=(
'https://www.instagram.com/aaronpk/'
+ 'https://www.instagram.com/indiewebcat/'
+ 'https://www.instagram.com/kmikeym/'
+ 'https://www.instagram.com/microformats/'
+ 'https://www.instagram.com/pk_spam/'
'https://www.instagram.com/p/BO5rYVElvJq/'
'https://www.instagram.com/p/BGDpqNoiMJ0/'
'https://www.instagram.com/p/BO_RN8AFZSx/'
@@ -20,5 +24,6 @@ for url in ${urls[@]}; do
echo "$url > $fn"
curl -i -s $url > data/www.instagram.com/$fn
unix2dos data/www.instagram.com/$fn
+ sleep 2
done