From 20af89c0c29abc63ef5e84e669fd4ef14998de40 Mon Sep 17 00:00:00 2001 From: "t.me/xtekky" <98614666+xtekky@users.noreply.github.com> Date: Sun, 23 Apr 2023 17:57:39 +0100 Subject: [PATCH] phind, user_agent and cf_clearance param for cloudflare bypass --- phind/README.md | 1 + phind/__init__.py | 20 ++++++++++++++------ {testing => phind}/phind_test.py | 3 ++- 3 files changed, 17 insertions(+), 7 deletions(-) rename {testing => phind}/phind_test.py (81%) diff --git a/phind/README.md b/phind/README.md index c9b85db..f17f487 100644 --- a/phind/README.md +++ b/phind/README.md @@ -5,6 +5,7 @@ import phind # set cf_clearance cookie phind.cf_clearance = 'xx.xx-1682166681-0-160' +phind.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36' # same as the one from browser you got cf_clearance from prompt = 'who won the quatar world cup' diff --git a/phind/__init__.py b/phind/__init__.py index 8bae9f1..629befa 100644 --- a/phind/__init__.py +++ b/phind/__init__.py @@ -8,6 +8,7 @@ from re import findall from curl_cffi.requests import post cf_clearance = '' +user_agent = '' class PhindResponse: @@ -52,6 +53,9 @@ class PhindResponse: class Search: def create(prompt: str, actualSearch: bool = True, language: str = 'en') -> dict: # None = no search + if user_agent == '': + raise ValueError('user_agent must be set, refer to documentation') + if not actualSearch: return { '_type': 'SearchResponse', @@ -83,7 +87,7 @@ class Search: 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', - 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', + 'user-agent': user_agent } return post('https://www.phind.com/api/bing/search', headers = headers, json = { @@ -102,6 +106,9 @@ class Completion: codeContext: str = '', language: str = 'en') -> PhindResponse: + if user_agent == '': + raise ValueError('user_agent must be set, refer to documentation') + if results is None: results = Search.create(prompt, actualSearch = True) @@ -141,7 +148,7 @@ class Completion: 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', - 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', + 'user-agent': user_agent } completion = '' @@ -192,9 +199,7 @@ class StreamingCompletion: 'creative': creative } } - - print(cf_clearance) - + headers = { 'authority': 'www.phind.com', 'accept': '*/*', @@ -209,7 +214,7 @@ class StreamingCompletion: 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', - 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', + 'user-agent': user_agent } response = post('https://www.phind.com/api/infer/answer', @@ -228,6 +233,9 @@ class StreamingCompletion: codeContext : str = '', language : str = 'en'): + if user_agent == '': + raise ValueError('user_agent must be set, refer to documentation') + if results is None: results = Search.create(prompt, actualSearch = True) diff --git a/testing/phind_test.py b/phind/phind_test.py similarity index 81% rename from testing/phind_test.py rename to phind/phind_test.py index 3e9217e..94354fd 100644 --- a/testing/phind_test.py +++ b/phind/phind_test.py @@ -1,7 +1,8 @@ import phind # set cf_clearance cookie -phind.cf_clearance = 'hWfIdYKgcnxnU5ayolWe9t7eEmAbULywS.qfHkm1T_A-1682166681-0-160' +phind.cf_clearance = 'heguhSRBB9d0sjLvGbQECS8b80m2BQ31xEmk9ChshKI-1682268995-0-160' +phind.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36' prompt = 'hello world'