Which proxy to use
For most scraping, Residential Lite is the cheapest way to get home IP addresses in the right country. Use Residential when you need a particular state or city, and Unlimited Datacenter for targets in the United States that do not block data centre addresses.
- Residentialfrom $2.64 per GB
- Residential Litefrom $0.69 per GB
- Unlimited Datacenterfrom $0.24 per hour
What to enter
A PiratProxies plan gives you four things: a host, a port, a username and a password. These are the values for Residential; the username and password are on your plan page.
| Host | resi.piratproxies.com |
|---|---|
| HTTP port | 8080 |
| SOCKS5 port | 1080 |
| Username | USERNAME |
| Password | from your plan page |
As one address:
http://USERNAME:PASSWORD@resi.piratproxies.com:8080The country and the session are chosen in the username, not in a separate setting. The generator on your plan page writes the username for you, and Targeting and sessions explains each part.
Steps
- Put the proxy address in
meta["proxy"]of each request. - Leave the session out of the username for crawling, so every request gets a new IP address.
- For a large project, set the proxy in one downloader middleware instead of in every spider.
Example
Spider
import scrapy
class IpSpider(scrapy.Spider):
name = "ip"
def start_requests(self):
yield scrapy.Request("https://api.ipify.org", meta={"proxy": "http://USERNAME:PASSWORD@resi.piratproxies.com:8080"})
def parse(self, response):
self.logger.info("Exit IP: %s", response.text)Replace USERNAME and PASSWORD with the login from your plan page. The example asks an IP-check address, so the output is the address your request left from.
Rotating or sticky
For crawling many pages with Scrapy, leave the username without a session so every request leaves from a new IP address. For anything with steps that belong together, such as a login, a cart or a paginated search that sets cookies, add a session to the username so those requests share one address.
A sticky username looks like this:
USERNAME-country-us-time-600-session-a1b2c3d4If it does not work
- Scrapy has no SOCKS support. Use the HTTP port, 8080.
- Scrapy keeps connections open, so several requests can leave from one IP address even with a rotating username. That is normal; the address changes when a new connection is opened.
- Add
407toRETRY_HTTP_CODESonly while debugging. A 407 means the login is wrong, and retrying does not fix it. - A
407error means the username or password was not accepted. Copy both again from your plan page, and check that nothing added a space or cut the username short. - If the IP address is in the wrong country, look at the username: the country code is part of it. More fixes.
Questions
Does Scrapy work with SOCKS5 proxies?
No. Use the HTTP port, 8080. It carries both http and https sites.
Which PiratProxies proxy should I use with Scrapy?
For most scraping, Residential Lite is the cheapest way to get home IP addresses in the right country. Use Residential when you need a particular state or city, and Unlimited Datacenter for targets in the United States that do not block data centre addresses.
Scrapy is a product of its own makers. PiratProxies is not affiliated with it; the name is used here only to say what this guide is about. Use it within the rules of the sites you work with and our acceptable use policy.