Skip to content

Commit 361fa4d

Browse files
authored
Fix check is crawlera response (#89)
* Use empty values on headers randomly * Check if the X-Crawlera-Version header is present
1 parent 9c57c95 commit 361fa4d

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

scrapy_crawlera/middleware.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ def _get_url_domain(self, url):
283283
return parsed.netloc
284284

285285
def _is_crawlera_response(self, response):
286-
return bool(response.headers.get("X-Crawlera-Version"))
286+
return bool("X-Crawlera-Version" in response.headers)
287287

288288
def _get_slot_key(self, request):
289289
return request.meta.get('download_slot')

tests/test_crawlera.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import pytest
2+
from random import choice
23
from unittest import TestCase
34
try:
45
from unittest.mock import call, patch
@@ -36,7 +37,8 @@ def setUp(self):
3637
self.settings = {'CRAWLERA_APIKEY': 'apikey'}
3738

3839
def _mock_crawlera_response(self, url, headers=None, **kwargs):
39-
crawlera_headers = {"X-Crawlera-Version": "1.36.3-cd5e44"}
40+
crawlera_version = choice(("1.36.3-cd5e44", "", None))
41+
crawlera_headers = {"X-Crawlera-Version": crawlera_version}
4042
if headers:
4143
crawlera_headers.update(headers)
4244
return Response(url, headers=crawlera_headers, **kwargs)

0 commit comments

Comments
 (0)