Send requests through curl-cffi when available, otherwise httpx.
| 23 | |
| 24 | @property |
| 25 | def transport_name(self) -> str: |
| 26 | if curl_requests is not None: |
| 27 | return f"curl-cffi:{self.settings.browser_impersonate}" |
| 28 | return "httpx" |
| 29 | |
| 30 | def request_json( |
| 31 | self, |
| 32 | method: str, |
| 33 | url: str, |
| 34 | *, |
| 35 | headers: dict[str, str] | None = None, |
| 36 | cookies: dict[str, str] | None = None, |
| 37 | json_body: Any | None = None, |
| 38 | form_body: dict[str, Any] | None = None, |
| 39 | params: dict[str, Any] | None = None, |
| 40 | proxy_url: str | None = None, |
| 41 | user_agent: str | None = None, |
| 42 | browser_impersonate: str | None = None, |
| 43 | ) -> dict[str, Any] | list[Any] | str | int | float | bool | None: |
| 44 | merged_headers = self._build_headers(headers=headers, user_agent=user_agent) |
| 45 | response = self._dispatch( |
| 46 | method=method, |
| 47 | url=url, |
| 48 | headers=merged_headers, |
| 49 | cookies=cookies or {}, |
| 50 | json_body=json_body, |
| 51 | form_body=form_body, |
| 52 | params=params, |
| 53 | proxy_url=proxy_url, |
| 54 | browser_impersonate=browser_impersonate, |
| 55 | ) |
| 56 | return self._decode_response(response=response, url=url) |
| 57 | |
| 58 | def request_text( |
| 59 | self, |
| 60 | method: str, |
| 61 | url: str, |
| 62 | *, |
| 63 | headers: dict[str, str] | None = None, |
| 64 | cookies: dict[str, str] | None = None, |
| 65 | form_body: dict[str, Any] | None = None, |
| 66 | params: dict[str, Any] | None = None, |
| 67 | proxy_url: str | None = None, |
| 68 | user_agent: str | None = None, |
| 69 | browser_impersonate: str | None = None, |
| 70 | ) -> str: |
| 71 | merged_headers = self._build_headers(headers=headers, user_agent=user_agent) |
| 72 | response = self._dispatch( |
| 73 | method=method, |
| 74 | url=url, |
| 75 | headers=merged_headers, |
| 76 | cookies=cookies or {}, |
| 77 | json_body=None, |
| 78 | form_body=form_body, |
| 79 | params=params, |
| 80 | proxy_url=proxy_url, |
| 81 | browser_impersonate=browser_impersonate, |
| 82 | ) |