ravelinodecastro / instagram-php-scraper
Instagram PHP Scraper. Get account information, photos and videos without any authorization
Requires
- php: >=7.2
- ext-curl: *
- ext-json: *
- guzzlehttp/psr7: ^1.7
- psr/http-client: ~1.0
- psr/simple-cache: ~1.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.2
- phpfastcache/phpfastcache: ^7.1
- phpunit/phpunit: ^7.0
- dev-any-proxy-api
- v0.11.1
- v0.11.0
- v0.10.1
- v0.10.0
- v0.9.14
- v0.9.13
- v0.9.12
- v0.9.11
- v0.9.10
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.35
- v0.8.34
- v0.8.33
- v0.8.32
- v0.8.31
- v0.8.30
- v0.8.29
- v0.8.28
- v0.8.27
- v0.8.26
- v0.8.25
- v0.8.24
- v0.8.23
- v0.8.22
- v0.8.21
- v0.8.20
- v0.8.19
- v0.8.18
- v0.8.17
- v0.8.16
- v0.8.15
- v0.8.14
- v0.8.13
- v0.8.12
- v0.8.11
- v0.8.10
- v0.8.9
- v0.8.8
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.1
- v0.6.0
- v0.5.9
- v0.5.8
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.8
- v0.4.7
- v0.4.6
- v0.4.5
- v0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.5
- v0.3.4
- 0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-dev-any-proxy-api
- dev-master
This package is auto-updated.
Last update: 2024-04-16 17:02:09 UTC
README
This library is based on the postaddictme and restyler libary versions. The difference is that my version can be associated with any proxy API. I've decided to build this version, because the restyler version was giving this message: "You have exceeded the MONTHLY quota for Requests on your current plan, BASIC." and it can only work with one proxy API and the postaddictme version do not allow us to use a proxy API directly.
Dependencies
Only these methods can use proxy API because they do not require authentication:
- getAccount()
- getAccountById()
- getMedias()
- getMediasByTag()
- getMediaByUrl()
- getMediaByCode()
Exemple using restyler's Rapid Api (Click here to subscribe on his Proxy API)
$instagram = new \InstagramScraper\Instagram(); $instagram->getProxyApiUrl('https://instagram40.p.rapidapi.com/proxy?url={instagram_url}'); // do not remove {instagram_url}, it is later replaced by the instagram endpoints $instagram->setHeaders(['x-rapidapi-key'=>'YOUR-RAPID-API-KEY']); // this is where you add your api key $nonPrivateAccountMedias = $instagram->getMedias('kevin'); echo $nonPrivateAccountMedias[0]->getLink();
Exemple using scraperapi (Click here to subscribe on his Proxy API)
$instagram = new \InstagramScraper\Instagram(); $instagram->getProxyApiUrl('http://api.scraperapi.com?api_key=YOUR-SCRAPPER-API-KEY&url={instagram_url}'); // do not remove {instagram_url}, it is later replaced by the instagram endpoints $nonPrivateAccountMedias = $instagram->getMedias('kevin'); echo $nonPrivateAccountMedias[0]->getLink();
Other methods that can be used in this libary are:
- getProxyApiUrl('string') : used to check and check if your Proxy API url is set
- clearProxyApiUrl() : to clear the previous url set if you don't want to make request with proxy API anymore
- setHeaders($array): is used to set headers, in case you want add them in your proxy API Request
From here, all the rest is just the same as it is on postaddictme library
Code Example
$instagram = \InstagramScraper\Instagram::withCredentials(new \GuzzleHttp\Client(), 'username', 'password'); $instagram->login(); $account = $instagram->getAccountById(3); echo $account->getUsername();
Some methods do not require authentication:
$instagram = new \InstagramScraper\Instagram(new \GuzzleHttp\Client()); $nonPrivateAccountMedias = $instagram->getMedias('kevin'); echo $nonPrivateAccountMedias[0]->getLink();
If you use authentication it is recommended to cache the user session. In this case you don't need to run the $instagram->login()
method every time your program runs:
use Phpfastcache\Helper\Psr16Adapter; $instagram = \InstagramScraper\Instagram::withCredentials(new \GuzzleHttp\Client(), 'username', 'password', new Psr16Adapter('Files')); $instagram->login(); // will use cached session if you want to force login $instagram->login(true) $instagram->saveSession(); //DO NOT forget this in order to save the session, otherwise have no sense $account = $instagram->getAccountById(3); echo $account->getUsername();
Using proxy for requests:
// https://docs.guzzlephp.org/en/stable/request-options.html#proxy $instagram = new \InstagramScraper\Instagram(new \GuzzleHttp\Client(['proxy' => 'tcp://localhost:8125'])); // Request with proxy $account = $instagram->getAccount('kevin'); \InstagramScraper\Instagram::setHttpClient(new \GuzzleHttp\Client()); // Request without proxy $account = $instagram->getAccount('kevin');
Installation
Using composer
composer.phar require ravelinodecastro/instagram-php-scraper
or
composer require ravelinodecastro/instagram-php-scraper
If you don't have composer
You can download it here.
Examples
See examples here.
Other
Java library: https://github.com/postaddictme/instagram-java-scraper