http_base.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import requests
  2. from tools.log import logger
  3. def http_post_proxy_request(url, form_data, headers=None, proxy=None, timeout=30):
  4. """
  5. 发送带有 JSON 数据的 POST 请求,并使用代理
  6. 参数:
  7. - url: 请求的目标 URL
  8. - json_data: 要发送的 JSON 数据
  9. - headers: 可选,请求头信息
  10. - proxy: 可选,代理地址,例如 "http://127.0.0.1:10809"
  11. - timeout: 可选,请求超时时间,默认为 10 秒
  12. 返回值:
  13. - response: 请求的响应对象
  14. """
  15. try:
  16. # 发送 POST 请求
  17. proxies = {"http": proxy, "https": proxy} if proxy else None
  18. response = requests.post(url, data=form_data, headers=headers, proxies=proxies, timeout=timeout)
  19. # 检查响应状态码
  20. response.raise_for_status()
  21. # 如果状态码为 200,表示请求成功
  22. if response.status_code == 200:
  23. return response
  24. #
  25. # # 获取响应的内容类型
  26. # content_type = response.headers.get('Content-Type', '')
  27. # # 如果内容类型为 JSON,解析 JSON 数据
  28. # if 'application/json' in content_type:
  29. # json_data = response.json()
  30. # return json_data
  31. # else:
  32. # # 如果内容类型不是 JSON,按照其他方式处理
  33. # logger.error(f"http_post_request:{url}:{response}")
  34. # return response.text
  35. else:
  36. # 如果状态码不为 200,可以根据实际需求处理其他状态码
  37. print(f"Unexpected status code: {response.status_code}")
  38. logger.exception(f"http_post_request:{url}:{response}")
  39. return None
  40. except requests.exceptions.RequestException as e:
  41. # 捕获请求异常
  42. logger.exception(f"http_post_request:{url}:{e}:{response}")
  43. return None
  44. def http_post_request(url, data, timeout=30):
  45. try:
  46. response = requests.post(url, json=data, timeout=timeout)
  47. response.raise_for_status() # 检查请求是否成功
  48. if 200 == response.status_code:
  49. return response
  50. logger.exception(f"http_post_request - code: {response},url: {url},data: {data}")
  51. return None
  52. except requests.exceptions.RequestException as req_exc:
  53. print(f"HTTP POST request error: {req_exc}")
  54. logger.exception(f"http_post_request - Error: {req_exc}, url: {url}, data: {data}")
  55. return None
  56. except Exception as e:
  57. print(f"An unexpected error occurred: {e}")
  58. logger.exception(f"http_post_request - Unexpected error: {e}, url: {url}, data: {data}")
  59. return None
  60. def http_post_request_proxy(url, headers, data, proxy=None, timeout=30):
  61. try:
  62. proxies = {"http": proxy, "https": proxy} if proxy else None
  63. response = requests.post(url, headers=headers, data=data, proxies=proxies, timeout=timeout)
  64. response.raise_for_status() # 检查请求是否成功
  65. if 200 == response.status_code:
  66. return response
  67. logger.error(f"http_post_request - code: {response},url: {url},data: {data}")
  68. return None
  69. except requests.exceptions.RequestException as req_exc:
  70. logger.error(f"http_post_request_proxy - Error: {req_exc}, url: {url}, headers: {headers},data: {data}")
  71. return None
  72. except Exception as e:
  73. logger.error(f"http_post_request_proxy - Unexpected error: {e}, url: {url}, headers: {headers},data: {data}")
  74. return None