src/Tweeper.php: enable cookie handling to fix scraping twitter.com
authorAntonio Ospite <ao2@ao2.it>
Sat, 27 Jul 2019 20:06:15 +0000 (22:06 +0200)
committerAntonio Ospite <ao2@ao2.it>
Sat, 27 Jul 2019 20:06:15 +0000 (22:06 +0200)
When the user agent used by a client matches an actual browser,
twitter.com enables content-security-policy and redirects the client on
the first request to make it reload the content.

After the redirection, the server assumes that the client sets cookies
appropriately, however cURL does not do that by default.

Enable cookie handling in cURL to fix scraping twitter.com.

NOTE: the CURLOPT_COOKIEFILE option is set to an empty string to enable
in-memory handling of the cookies, removing the need for a temporary
file on the filesystem, see:
https://www.php.net/manual/en/function.curl-setopt.php

src/Tweeper.php

index 09bd7cc..7ecbf2f 100644 (file)
@@ -121,6 +121,7 @@ class Tweeper {
       CURLOPT_CONNECTTIMEOUT => Tweeper::$maxConnectionTimeout,
       // Follow http redirects to get the real URL.
       CURLOPT_FOLLOWLOCATION => TRUE,
       CURLOPT_CONNECTTIMEOUT => Tweeper::$maxConnectionTimeout,
       // Follow http redirects to get the real URL.
       CURLOPT_FOLLOWLOCATION => TRUE,
+      CURLOPT_COOKIEFILE => "",
       CURLOPT_RETURNTRANSFER => TRUE,
       CURLOPT_SSL_VERIFYHOST => FALSE,
       CURLOPT_SSL_VERIFYPEER => FALSE,
       CURLOPT_RETURNTRANSFER => TRUE,
       CURLOPT_SSL_VERIFYHOST => FALSE,
       CURLOPT_SSL_VERIFYPEER => FALSE,