Skip to content

Commit 622ab6a

Browse files
authored
Add X-Crawlera-Client header (#99)
1 parent 1c7c66f commit 622ab6a

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

scrapy_crawlera/middleware.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,13 +148,15 @@ def get_proxyauth(self, spider):
148148
return basic_auth_header(self.apikey, '')
149149

150150
def process_request(self, request, spider):
151+
from scrapy_crawlera import __version__
151152
if self._is_enabled_for_request(request):
152153
self._set_crawlera_default_headers(request)
153154
request.meta['proxy'] = self.url
154155
request.meta['download_timeout'] = self.download_timeout
155156
request.headers['Proxy-Authorization'] = self._proxyauth
156157
if self.job_id:
157158
request.headers['X-Crawlera-Jobid'] = self.job_id
159+
request.headers['X-Crawlera-Client'] = 'scrapy-crawlera/%s' % __version__
158160
self.crawler.stats.inc_value('crawlera/request')
159161
self.crawler.stats.inc_value('crawlera/request/method/%s' % request.method)
160162
else:

tests/test_crawlera.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from scrapy.exceptions import ScrapyDeprecationWarning
1515
from twisted.internet.error import ConnectionRefusedError, ConnectionDone
1616

17-
from scrapy_crawlera import CrawleraMiddleware
17+
from scrapy_crawlera import CrawleraMiddleware, __version__
1818
import os
1919

2020
from scrapy_crawlera.utils import exp_backoff
@@ -895,3 +895,15 @@ def test_settings_dict(self):
895895
mw.process_request(req, self.spider)
896896
assert mw.process_request(req, self.spider) is None
897897
self.assertEqual(req.headers['X-Crawlera-Profile'], b'desktop')
898+
899+
def test_client_header(self):
900+
self.spider.crawlera_enabled = True
901+
crawler = self._mock_crawler(self.spider, self.settings)
902+
mw = self.mwcls.from_crawler(crawler)
903+
mw.open_spider(self.spider)
904+
req = Request('http://www.scrapytest.org')
905+
self.assertEqual(mw.process_request(req, self.spider), None)
906+
self.assertEqual(
907+
req.headers.get('X-Crawlera-Client').decode('utf-8'),
908+
'scrapy-crawlera/%s' % __version__
909+
)

0 commit comments

Comments
 (0)