diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c002b809..72ad9619 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,10 +35,10 @@ jobs: - name: Run lints run: ./scripts/lint - upload: + build: if: github.repository == 'stainless-sdks/steel-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork) timeout-minutes: 10 - name: upload + name: build permissions: contents: read id-token: write @@ -46,6 +46,20 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Install Rye + run: | + curl -sSf https://rye.astral.sh/get | bash + echo "$HOME/.rye/shims" >> $GITHUB_PATH + env: + RYE_VERSION: '0.44.0' + RYE_INSTALL_OPTION: '--yes' + + - name: Install dependencies + run: rye sync --all-features + + - name: Run build + run: rye build + - name: Get GitHub OIDC Token id: github-oidc uses: actions/github-script@v6 diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2aca35ae..4208b5cb 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.5.0" + ".": "0.6.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index d612d691..535cb6ea 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 25 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/nen-labs%2Fsteel-f81cef6f87adc0530d9bc21e8d47c95aadef9d5bc3c282837ae0ad41d7f71bac.yml -openapi_spec_hash: 5b273b225abb80a969ea1485bf399745 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/nen-labs%2Fsteel-efa19cc3cc7e8d1692f1952185eb882fd6250d5bc81af147aab3830fc39b4f8d.yml +openapi_spec_hash: 85a6c998ec4fbd8d526ccd3dd40bdf96 config_hash: 42515bf83f1e0e765071038fcf702122 diff --git a/CHANGELOG.md b/CHANGELOG.md index 08a0b09d..d7913bf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.6.0 (2025-07-02) + +Full Changelog: [v0.5.0...v0.6.0](https://github.com/steel-dev/steel-python/compare/v0.5.0...v0.6.0) + +### Features + +* **api:** api update ([4a1726f](https://github.com/steel-dev/steel-python/commit/4a1726f54695553013b1bec0ab6c3b7e0f196482)) +* **api:** api update ([dc67b27](https://github.com/steel-dev/steel-python/commit/dc67b27864bfcf0e040996cfe3d8538dbdb5328f)) + + +### Chores + +* **ci:** change upload type ([76f1526](https://github.com/steel-dev/steel-python/commit/76f1526277ff1a1dbc75ed3ce5c57e51293dfb3d)) + ## 0.5.0 (2025-06-30) Full Changelog: [v0.4.0...v0.5.0](https://github.com/steel-dev/steel-python/compare/v0.4.0...v0.5.0) diff --git a/pyproject.toml b/pyproject.toml index a7be57df..4a928087 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "steel-sdk" -version = "0.5.0" +version = "0.6.0" description = "The official Python library for the steel API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/scripts/utils/upload-artifact.sh b/scripts/utils/upload-artifact.sh index 6a971b37..ef1e3aa7 100755 --- a/scripts/utils/upload-artifact.sh +++ b/scripts/utils/upload-artifact.sh @@ -1,7 +1,9 @@ #!/usr/bin/env bash set -exuo pipefail -RESPONSE=$(curl -X POST "$URL" \ +FILENAME=$(basename dist/*.whl) + +RESPONSE=$(curl -X POST "$URL?filename=$FILENAME" \ -H "Authorization: Bearer $AUTH" \ -H "Content-Type: application/json") @@ -12,13 +14,13 @@ if [[ "$SIGNED_URL" == "null" ]]; then exit 1 fi -UPLOAD_RESPONSE=$(tar -cz . | curl -v -X PUT \ - -H "Content-Type: application/gzip" \ - --data-binary @- "$SIGNED_URL" 2>&1) +UPLOAD_RESPONSE=$(curl -v -X PUT \ + -H "Content-Type: binary/octet-stream" \ + --data-binary "@dist/$FILENAME" "$SIGNED_URL" 2>&1) if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then echo -e "\033[32mUploaded build to Stainless storage.\033[0m" - echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/steel-python/$SHA'\033[0m" + echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/steel-python/$SHA/$FILENAME'\033[0m" else echo -e "\033[31mFailed to upload artifact.\033[0m" exit 1 diff --git a/src/steel/_version.py b/src/steel/_version.py index 62dd1dd2..13f46648 100644 --- a/src/steel/_version.py +++ b/src/steel/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "steel" -__version__ = "0.5.0" # x-release-please-version +__version__ = "0.6.0" # x-release-please-version diff --git a/src/steel/resources/sessions/sessions.py b/src/steel/resources/sessions/sessions.py index 55588f59..5b9c54e1 100644 --- a/src/steel/resources/sessions/sessions.py +++ b/src/steel/resources/sessions/sessions.py @@ -76,8 +76,9 @@ def create( session_context: session_create_params.SessionContext | NotGiven = NOT_GIVEN, session_id: str | NotGiven = NOT_GIVEN, solve_captcha: bool | NotGiven = NOT_GIVEN, + stealth_config: session_create_params.StealthConfig | NotGiven = NOT_GIVEN, api_timeout: int | NotGiven = NOT_GIVEN, - use_proxy: bool | NotGiven = NOT_GIVEN, + use_proxy: session_create_params.UseProxy | NotGiven = NOT_GIVEN, user_agent: str | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -116,10 +117,12 @@ def create( solve_captcha: Enable automatic captcha solving. Default is false. + stealth_config: Stealth configuration for the session + api_timeout: Session timeout duration in milliseconds. Default is 300000 (5 minutes). - use_proxy: Enable Steel-provided residential proxy usage for the browser session. Default - is false, which routes requests through datacenter proxies. + use_proxy: Proxy configuration for the session. Can be a boolean or array of proxy + configurations user_agent: Custom user agent string for the browser session @@ -146,6 +149,7 @@ def create( "session_context": session_context, "session_id": session_id, "solve_captcha": solve_captcha, + "stealth_config": stealth_config, "api_timeout": api_timeout, "use_proxy": use_proxy, "user_agent": user_agent, @@ -432,8 +436,9 @@ async def create( session_context: session_create_params.SessionContext | NotGiven = NOT_GIVEN, session_id: str | NotGiven = NOT_GIVEN, solve_captcha: bool | NotGiven = NOT_GIVEN, + stealth_config: session_create_params.StealthConfig | NotGiven = NOT_GIVEN, api_timeout: int | NotGiven = NOT_GIVEN, - use_proxy: bool | NotGiven = NOT_GIVEN, + use_proxy: session_create_params.UseProxy | NotGiven = NOT_GIVEN, user_agent: str | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -472,10 +477,12 @@ async def create( solve_captcha: Enable automatic captcha solving. Default is false. + stealth_config: Stealth configuration for the session + api_timeout: Session timeout duration in milliseconds. Default is 300000 (5 minutes). - use_proxy: Enable Steel-provided residential proxy usage for the browser session. Default - is false, which routes requests through datacenter proxies. + use_proxy: Proxy configuration for the session. Can be a boolean or array of proxy + configurations user_agent: Custom user agent string for the browser session @@ -502,6 +509,7 @@ async def create( "session_context": session_context, "session_id": session_id, "solve_captcha": solve_captcha, + "stealth_config": stealth_config, "api_timeout": api_timeout, "use_proxy": use_proxy, "user_agent": user_agent, diff --git a/src/steel/types/session.py b/src/steel/types/session.py index bae401fe..5a9ca76e 100644 --- a/src/steel/types/session.py +++ b/src/steel/types/session.py @@ -8,7 +8,7 @@ from .._models import BaseModel -__all__ = ["Session", "Dimensions"] +__all__ = ["Session", "Dimensions", "StealthConfig"] class Dimensions(BaseModel): @@ -19,6 +19,17 @@ class Dimensions(BaseModel): """Width of the browser window""" +class StealthConfig(BaseModel): + humanize_interactions: Optional[bool] = FieldInfo(alias="humanizeInteractions", default=None) + """ + This flag will make the browser act more human-like by moving the mouse in a + more natural way + """ + + skip_fingerprint_injection: Optional[bool] = FieldInfo(alias="skipFingerprintInjection", default=None) + """This flag will skip the fingerprint generation for the session.""" + + class Session(BaseModel): id: str """Unique identifier for the session""" @@ -44,6 +55,9 @@ class Session(BaseModel): proxy_bytes_used: int = FieldInfo(alias="proxyBytesUsed") """Amount of data transmitted through the proxy""" + proxy_source: Optional[Literal["steel", "external"]] = FieldInfo(alias="proxySource", default=None) + """Source of the proxy used for the session""" + session_viewer_url: str = FieldInfo(alias="sessionViewerUrl") """URL to view session details""" @@ -59,14 +73,14 @@ class Session(BaseModel): is_selenium: Optional[bool] = FieldInfo(alias="isSelenium", default=None) """Indicates if Selenium is used in the session""" - proxy: Optional[str] = None - """Proxy server used for the session""" - region: Optional[Literal["lax", "ord", "iad", "bom", "scl", "fra", "hkg"]] = None """The region where the session was created""" solve_captcha: Optional[bool] = FieldInfo(alias="solveCaptcha", default=None) """Indicates if captcha solving is enabled""" + stealth_config: Optional[StealthConfig] = FieldInfo(alias="stealthConfig", default=None) + """Stealth configuration for the session""" + user_agent: Optional[str] = FieldInfo(alias="userAgent", default=None) """User agent string used in the session""" diff --git a/src/steel/types/session_create_params.py b/src/steel/types/session_create_params.py index 40f94bd1..e6b769fd 100644 --- a/src/steel/types/session_create_params.py +++ b/src/steel/types/session_create_params.py @@ -4,7 +4,7 @@ from typing import Dict, Union, Iterable from datetime import datetime -from typing_extensions import Literal, Required, Annotated, TypedDict +from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict from .._utils import PropertyInfo @@ -19,6 +19,11 @@ "SessionContextIndexedDBData", "SessionContextIndexedDBDataRecord", "SessionContextIndexedDBDataRecordBlobFile", + "StealthConfig", + "UseProxy", + "UseProxyGeolocation", + "UseProxyGeolocationGeolocation", + "UseProxyServer", ] @@ -66,13 +71,16 @@ class SessionCreateParams(TypedDict, total=False): solve_captcha: Annotated[bool, PropertyInfo(alias="solveCaptcha")] """Enable automatic captcha solving. Default is false.""" + stealth_config: Annotated[StealthConfig, PropertyInfo(alias="stealthConfig")] + """Stealth configuration for the session""" + api_timeout: Annotated[int, PropertyInfo(alias="timeout")] """Session timeout duration in milliseconds. Default is 300000 (5 minutes).""" - use_proxy: Annotated[bool, PropertyInfo(alias="useProxy")] - """Enable Steel-provided residential proxy usage for the browser session. + use_proxy: Annotated[UseProxy, PropertyInfo(alias="useProxy")] + """Proxy configuration for the session. - Default is false, which routes requests through datacenter proxies. + Can be a boolean or array of proxy configurations """ user_agent: Annotated[str, PropertyInfo(alias="userAgent")] @@ -209,3 +217,1367 @@ class SessionContext(TypedDict, total=False): session_storage: Annotated[Dict[str, Dict[str, str]], PropertyInfo(alias="sessionStorage")] """Domain-specific sessionStorage items to initialize in the session""" + + +class StealthConfig(TypedDict, total=False): + humanize_interactions: Annotated[bool, PropertyInfo(alias="humanizeInteractions")] + """ + This flag will make the browser act more human-like by moving the mouse in a + more natural way. + """ + + skip_fingerprint_injection: Annotated[bool, PropertyInfo(alias="skipFingerprintInjection")] + """This flag will skip the fingerprint generation for the session.""" + + +class UseProxyGeolocationGeolocation(TypedDict, total=False): + country: Required[ + Literal[ + "US", + "CA", + "MX", + "GB", + "DE", + "FR", + "IT", + "ES", + "PL", + "NL", + "SE", + "NO", + "DK", + "FI", + "CH", + "AT", + "BE", + "IE", + "PT", + "GR", + "CZ", + "HU", + "RO", + "BG", + "SK", + "SI", + "HR", + "EE", + "LV", + "LT", + "LU", + "MT", + "CY", + "IS", + "LI", + "MC", + "SM", + "VA", + "JP", + "KR", + "CN", + "HK", + "TW", + "SG", + "AU", + "NZ", + "IN", + "TH", + "MY", + "PH", + "ID", + "VN", + "AF", + "BD", + "BN", + "KH", + "LA", + "LK", + "MM", + "NP", + "PK", + "FJ", + "PG", + "AE", + "SA", + "IL", + "TR", + "IR", + "IQ", + "JO", + "KW", + "LB", + "OM", + "QA", + "BH", + "YE", + "SY", + "ZA", + "EG", + "MA", + "NG", + "KE", + "DZ", + "AO", + "BW", + "ET", + "GH", + "CI", + "LY", + "MZ", + "RW", + "SN", + "TN", + "UG", + "ZM", + "ZW", + "TZ", + "MU", + "SC", + "BR", + "AR", + "CL", + "CO", + "PE", + "VE", + "EC", + "UY", + "PY", + "BO", + "CR", + "CU", + "DO", + "GT", + "HN", + "JM", + "NI", + "PA", + "SV", + "TT", + "BB", + "BZ", + "GY", + "SR", + "RU", + "UA", + "BY", + "KZ", + "UZ", + "AZ", + "GE", + "AM", + "MD", + "MK", + "AL", + "BA", + "RS", + "ME", + "XK", + "MN", + "KG", + "TJ", + "TM", + ] + ] + """Country code (e.g., 'US', 'GB', 'DE') - ISO 3166-1 alpha-2""" + + city: Literal[ + "A_CORUNA", + "ABIDJAN", + "ABU_DHABI", + "ABUJA", + "ACAPULCO_DE JUAREZ", + "ACCRA", + "ADANA", + "ADAPAZARI", + "ADDIS_ABABA", + "ADELAIDE", + "AFYONKARAHISAR", + "AGADIR", + "AGUAS_LINDAS DE GOIAS", + "AGUASCALIENTES", + "AHMEDABAD", + "AIZAWL", + "AJMAN", + "AKRON", + "AKSARAY", + "AL_AIN CITY", + "AL_MANSURAH", + "AL_QATIF", + "ALAJUELA", + "ALBANY", + "ALBUQUERQUE", + "ALEXANDRIA", + "ALGIERS", + "ALICANTE", + "ALMADA", + "ALMATY", + "ALMERE_STAD", + "ALVORADA", + "AMADORA", + "AMASYA", + "AMBATO", + "AMERICANA", + "AMMAN", + "AMSTERDAM", + "ANANINDEUA", + "ANAPOLIS", + "ANGELES_CITY", + "ANGERS", + "ANGRA_DOS REIS", + "ANKARA", + "ANTAKYA", + "ANTALYA", + "ANTANANARIVO", + "ANTIPOLO_CITY", + "ANTOFAGASTA", + "ANTWERP", + "APARECIDA_DE GOIANIA", + "APODACA", + "ARACAJU", + "ARACATUBA", + "ARAD", + "ARAGUAINA", + "ARAPIRACA", + "ARARAQUARA", + "AREQUIPA", + "ARICA", + "ARLINGTON", + "ARYANAH", + "ASTANA", + "ASUNCION", + "ASYUT", + "ATAKUM", + "ATHENS", + "ATIBAIA", + "ATLANTA", + "AUBURN", + "AUCKLAND", + "AURORA", + "AUSTIN", + "AVELLANEDA", + "AYDIN", + "AZCAPOTZALCO", + "BACOLOD_CITY", + "BACOOR", + "BAGHDAD", + "BAGUIO_CITY", + "BAHIA_BLANCA", + "BAKERSFIELD", + "BAKU", + "BALIKESIR", + "BALIKPAPAN", + "BALNEARIO_CAMBORIU", + "BALTIMORE", + "BANDAR_LAMPUNG", + "BANDAR_SERI BEGAWAN", + "BANDUNG", + "BANGKOK", + "BANJA_LUKA", + "BANJARMASIN", + "BARCELONA", + "BARI", + "BARQUISIMETO", + "BARRA_MANSA", + "BARRANQUILLA", + "BARUERI", + "BATAM", + "BATANGAS", + "BATMAN", + "BATNA_CITY", + "BATON_ROUGE", + "BATUMI", + "BAURU", + "BEIRUT", + "BEJAIA", + "BEKASI", + "BELEM", + "BELFAST", + "BELFORD_ROXO", + "BELGRADE", + "BELO_HORIZONTE", + "BENGALURU", + "BENI_MELLAL", + "BERAZATEGUI", + "BERN", + "BETIM", + "BHARATPUR", + "BHOPAL", + "BHUBANESWAR", + "BIALYSTOK", + "BIEN_HOA", + "BILBAO", + "BILECIK", + "BIRATNAGAR", + "BIRMINGHAM", + "BISHKEK", + "BIZERTE", + "BLIDA", + "BLOEMFONTEIN", + "BLOOMINGTON", + "BLUMENAU", + "BOA_VISTA", + "BOCHUM", + "BOGOR", + "BOGOTA", + "BOISE", + "BOKSBURG", + "BOLOGNA", + "BOLU", + "BORDEAUX", + "BOSTON", + "BOTUCATU", + "BRADFORD", + "BRAGA", + "BRAGANCA_PAULISTA", + "BRAMPTON", + "BRASILIA", + "BRASOV", + "BRATISLAVA", + "BREMEN", + "BRESCIA", + "BREST", + "BRIDGETOWN", + "BRISBANE", + "BRISTOL", + "BRNO", + "BROOKLYN", + "BRUSSELS", + "BUCARAMANGA", + "BUCHAREST", + "BUDAPEST", + "BUENOS_AIRES", + "BUFFALO", + "BUK_GU", + "BUKHARA", + "BURGAS", + "BURNABY", + "BURSA", + "BUTUAN", + "BYDGOSZCZ", + "CABANATUAN_CITY", + "CABO_FRIO", + "CABUYAO", + "CACHOEIRO_DE ITAPEMIRIM", + "CAGAYAN_DE ORO", + "CAGLIARI", + "CAIRO", + "CALAMBA", + "CALGARY", + "CALOOCAN_CITY", + "CAMACARI", + "CAMARAGIBE", + "CAMPECHE", + "CAMPINA_GRANDE", + "CAMPINAS", + "CAMPO_GRANDE", + "CAMPO_LARGO", + "CAMPOS_DOS GOYTACAZES", + "CAN_THO", + "CANOAS", + "CANTON", + "CAPE_TOWN", + "CARACAS", + "CARAGUATATUBA", + "CARAPICUIBA", + "CARDIFF", + "CARIACICA", + "CARMONA", + "CARTAGENA", + "CARUARU", + "CASABLANCA", + "CASCAVEL", + "CASEROS", + "CASTANHAL", + "CASTRIES", + "CATALAO", + "CATAMARCA", + "CATANDUVA", + "CATANIA", + "CAUCAIA", + "CAXIAS_DO SUL", + "CEBU_CITY", + "CENTRAL", + "CENTRO", + "CENTURION", + "CHAGUANAS", + "CHANDIGARH", + "CHANDLER", + "CHANG_HUA", + "CHAPECO", + "CHARLESTON", + "CHARLOTTE", + "CHELYABINSK", + "CHENNAI", + "CHERKASY", + "CHERNIVTSI", + "CHIA", + "CHIANG_MAI", + "CHICLAYO", + "CHIHUAHUA_CITY", + "CHIMBOTE", + "CHISINAU", + "CHITTAGONG", + "CHRISTCHURCH", + "CINCINNATI", + "CIREBON", + "CITY_OF MUNTINLUPA", + "CIUDAD_DEL ESTE", + "CIUDAD_GUAYANA", + "CIUDAD_JUAREZ", + "CIUDAD_NEZAHUALCOYOTL", + "CIUDAD_OBREGON", + "CLEVELAND", + "CLUJ_NAPOCA", + "COCHABAMBA", + "COIMBATORE", + "COIMBRA", + "COLOGNE", + "COLOMBO", + "COLORADO_SPRINGS", + "COLUMBIA", + "COLUMBUS", + "COMODORO_RIVADAVIA", + "CONCEPCION", + "CONCORD", + "CONSTANTA", + "CONSTANTINE", + "CONTAGEM", + "COPENHAGEN", + "CORDOBA", + "CORRIENTES", + "CORUM", + "COTIA", + "COVENTRY", + "CRAIOVA", + "CRICIUMA", + "CROYDON", + "CUAUTITLAN_IZCALLI", + "CUCUTA", + "CUENCA", + "CUERNAVACA", + "CUIABA", + "CULIACAN", + "CURITIBA", + "CUSCO", + "DA_NANG", + "DAGUPAN", + "DAKAR", + "DALLAS", + "DAMIETTA", + "DAMMAM", + "DAR_ES SALAAM", + "DASMARINAS", + "DAVAO_CITY", + "DAYTON", + "DEBRECEN", + "DECATUR", + "DEHRADUN", + "DELHI", + "DENIZLI", + "DENPASAR", + "DENVER", + "DEPOK", + "DERBY", + "DETROIT", + "DHAKA", + "DIADEMA", + "DIVINOPOLIS", + "DIYARBAKIR", + "DJELFA", + "DNIPRO", + "DOHA", + "DORTMUND", + "DOURADOS", + "DRESDEN", + "DUBAI", + "DUBLIN", + "DUEZCE", + "DUISBURG", + "DUQUE_DE CAXIAS", + "DURANGO", + "DURBAN", + "DUSSELDORF", + "ECATEPEC", + "EDINBURGH", + "EDIRNE", + "EDMONTON", + "EL_JADIDA", + "EL_PASO", + "ELAZIG", + "EMBU", + "ENSENADA", + "ERBIL", + "ERZURUM", + "ESKISEHIR", + "ESPOO", + "ESSEN", + "FAISALABAD", + "FAYETTEVILLE", + "FAZENDA_RIO GRANDE", + "FEIRA_DE SANTANA", + "FES", + "FLORENCE", + "FLORENCIO_VARELA", + "FLORIANOPOLIS", + "FONTANA", + "FORMOSA", + "FORT_LAUDERDALE", + "FORT_WAYNE", + "FORT_WORTH", + "FORTALEZA", + "FOZ_DO IGUACU", + "FRANCA", + "FRANCISCO_MORATO", + "FRANCO_DA ROCHA", + "FRANKFURT_AM MAIN", + "FREDERICKSBURG", + "FRESNO", + "FUNCHAL", + "GABORONE", + "GAINESVILLE", + "GALATI", + "GANGNAM_GU", + "GARANHUNS", + "GATINEAU", + "GAZIANTEP", + "GDANSK", + "GDYNIA", + "GENERAL_TRIAS", + "GENEVA", + "GENOA", + "GEORGE_TOWN", + "GEORGETOWN", + "GHAZIABAD", + "GHENT", + "GIJON", + "GIRESUN", + "GIZA", + "GLASGOW", + "GLENDALE", + "GLIWICE", + "GOIANIA", + "GOMEL", + "GOTHENBURG", + "GOVERNADOR_VALADARES", + "GOYANG_SI", + "GRANADA", + "GRAND_RAPIDS", + "GRAVATAI", + "GRAZ", + "GREENSBORO", + "GREENVILLE", + "GUADALAJARA", + "GUADALUPE", + "GUANGZHOU", + "GUARAPUAVA", + "GUARATINGUETA", + "GUARUJA", + "GUARULHOS", + "GUATEMALA_CITY", + "GUAYAQUIL", + "GUJRANWALA", + "GURUGRAM", + "GUSTAVO_ADOLFO MADERO", + "GUWAHATI", + "GWANAK_GU", + "HACKNEY", + "HAIFA", + "HAIPHONG", + "HAMBURG", + "HAMILTON", + "HANOI", + "HANOVER", + "HARARE", + "HAVANA", + "HELSINKI", + "HENDERSON", + "HEREDIA", + "HERMOSILLO", + "HIALEAH", + "HO_CHI MINH CITY", + "HOLLYWOOD", + "HOLON", + "HONOLULU", + "HORTOLANDIA", + "HRODNA", + "HSINCHU", + "HUANCAYO", + "HUANUCO", + "HULL", + "HURLINGHAM", + "HYDERABAD", + "IASI", + "IBAGUE", + "ICA", + "ILAM", + "ILFORD", + "ILIGAN", + "ILOILO_CITY", + "IMPERATRIZ", + "IMUS", + "INCHEON", + "INDAIATUBA", + "INDIANAPOLIS", + "INDORE", + "IPATINGA", + "IPOH", + "IQUIQUE", + "IRVINE", + "ISIDRO_CASANOVA", + "ISLAMABAD", + "ISLINGTON", + "ISMAILIA", + "ISPARTA", + "ISTANBUL", + "ITABORAI", + "ITABUNA", + "ITAJAI", + "ITANHAEM", + "ITAPEVI", + "ITAQUAQUECETUBA", + "ITUZAINGO", + "IZMIR", + "IZTAPALAPA", + "JABOATAO_DOS GUARARAPES", + "JACAREI", + "JACKSON", + "JACKSONVILLE", + "JAIPUR", + "JAKARTA", + "JARAGUA_DO SUL", + "JAU", + "JEDDAH", + "JEMBER", + "JERUSALEM", + "JOAO_MONLEVADE", + "JOAO_PESSOA", + "JODHPUR", + "JOHANNESBURG", + "JOHOR_BAHRU", + "JOINVILLE", + "JOSE_C PAZ", + "JOSE_MARIA EZEIZA", + "JUAREZ", + "JUAZEIRO_DO NORTE", + "JUIZ_DE FORA", + "JUNDIAI", + "KAHRAMANMARAS", + "KAMPALA", + "KANPUR", + "KANSAS_CITY", + "KAOHSIUNG_CITY", + "KARABUK", + "KARACHI", + "KARLSRUHE", + "KARNAL", + "KASKI", + "KASTAMONU", + "KATHMANDU", + "KATOWICE", + "KATSINA", + "KATY", + "KAUNAS", + "KAYSERI", + "KAZAN", + "KECSKEMET", + "KEDIRI", + "KENITRA", + "KHARKIV", + "KHMELNYTSKYI", + "KHON_KAEN", + "KIELCE", + "KIGALI", + "KINGSTON", + "KIRKLARELI", + "KISSIMMEE", + "KITCHENER", + "KLAIPEDA", + "KNOXVILLE", + "KOCHI", + "KOLKATA", + "KOLLAM", + "KONYA", + "KOSEKOY", + "KOSICE", + "KOTA_KINABALU", + "KOZHIKODE", + "KRAKOW", + "KRASNODAR", + "KRYVYI_RIH", + "KUALA_LUMPUR", + "KUCHING", + "KUTAHYA", + "KUTAISI", + "KUWAIT_CITY", + "KYIV", + "LA_PAZ", + "LA_PLATA", + "LA_RIOJA", + "LA_SERENA", + "LAFAYETTE", + "LAFERRERE", + "LAGES", + "LAGOS", + "LAHORE", + "LAHUG", + "LAKE_WORTH", + "LAKELAND", + "LANCASTER", + "LANUS", + "LAS_PALMAS DE GRAN CANARIA", + "LAS_PINAS", + "LAS_VEGAS", + "LAUSANNE", + "LAVAL", + "LAWRENCEVILLE", + "LE_MANS", + "LEEDS", + "LEICESTER", + "LEIPZIG", + "LEON", + "LEXINGTON", + "LIBREVILLE", + "LIEGE", + "LILLE", + "LIMA", + "LIMASSOL", + "LIMEIRA", + "LINCOLN", + "LINHARES", + "LIPA_CITY", + "LISBON", + "LIVERPOOL", + "LJUBLJANA", + "LODZ", + "LOJA", + "LOMAS_DE ZAMORA", + "LOME", + "LONDRINA", + "LONG_BEACH", + "LONGUEUIL", + "LOUISVILLE", + "LUANDA", + "LUBLIN", + "LUCENA_CITY", + "LUCKNOW", + "LUDHIANA", + "LUSAKA", + "LUXEMBOURG", + "LUZIANIA", + "LVIV", + "LYON", + "MABALACAT", + "MACAE", + "MACAO", + "MACAPA", + "MACEIO", + "MACHALA", + "MADISON", + "MADRID", + "MAGE", + "MAGELANG", + "MAGNESIA_AD SIPYLUM", + "MAKASSAR", + "MAKATI_CITY", + "MALABON", + "MALAGA", + "MALANG", + "MALAPPURAM", + "MALDONADO", + "MALE", + "MALMO", + "MANADO", + "MANAGUA", + "MANAMA", + "MANAUS", + "MANCHESTER", + "MANDALUYONG_CITY", + "MANILA", + "MANIZALES", + "MANNHEIM", + "MAPUTO", + "MAR_DEL PLATA", + "MARABA", + "MARACAIBO", + "MARACANAU", + "MARACAY", + "MARDIN", + "MARIBOR", + "MARICA", + "MARIETTA", + "MARIKINA_CITY", + "MARILIA", + "MARINGA", + "MARRAKESH", + "MARSEILLE", + "MAUA", + "MAZATLAN", + "MEDAN", + "MEDELLIN", + "MEDINA", + "MEERUT", + "MEKNES", + "MELBOURNE", + "MEMPHIS", + "MENDOZA", + "MERIDA", + "MERKEZ", + "MERLO", + "MERSIN", + "MESA", + "MEXICALI", + "MEXICO_CITY", + "MILAN", + "MILTON_KEYNES", + "MILWAUKEE", + "MINNEAPOLIS", + "MINSK", + "MISKOLC", + "MISSISSAUGA", + "MOGI_DAS CRUZES", + "MOHALI", + "MONROE", + "MONTE_GRANDE", + "MONTEGO_BAY", + "MONTERREY", + "MONTES_CLAROS", + "MONTEVIDEO", + "MONTGOMERY", + "MONTPELLIER", + "MONTREAL", + "MORELIA", + "MORENO", + "MORON", + "MOSSORO", + "MUGLA", + "MULTAN", + "MUMBAI", + "MUNICH", + "MURCIA", + "MUSCAT", + "MUZAFFARGARH", + "MYKOLAYIV", + "NAALDWIJK", + "NAGA", + "NAGPUR", + "NAIROBI", + "NANTES", + "NAPLES", + "NASHVILLE", + "NASSAU", + "NASUGBU", + "NATAL", + "NAUCALPAN", + "NAVI_MUMBAI", + "NEIVA", + "NEUQUEN", + "NEVSEHIR", + "NEW_DELHI", + "NEW_ORLEANS", + "NEW_TAIPEI", + "NEWARK", + "NEWCASTLE_UPON TYNE", + "NHA_TRANG", + "NICE", + "NICOSIA", + "NILOPOLIS", + "NIS", + "NITEROI", + "NITRA", + "NIZHNIY_NOVGOROD", + "NOGALES", + "NOIDA", + "NORTHAMPTON", + "NORWICH", + "NOTTINGHAM", + "NOVA_FRIBURGO", + "NOVA_IGUACU", + "NOVI_SAD", + "NOVO_HAMBURGO", + "NOVOSIBIRSK", + "NUREMBERG", + "OAKLAND", + "OAXACA_CITY", + "ODESA", + "OKLAHOMA_CITY", + "OLINDA", + "OLOMOUC", + "OLONGAPO_CITY", + "OLSZTYN", + "OMAHA", + "ORADEA", + "ORAN", + "ORDU", + "ORLANDO", + "OSASCO", + "OSLO", + "OSMANIYE", + "OSTRAVA", + "OTTAWA", + "OUJDA", + "OURINHOS", + "PACHUCA", + "PADOVA", + "PALAKKAD", + "PALEMBANG", + "PALERMO", + "PALHOCA", + "PALMA", + "PALMAS", + "PANAMA_CITY", + "PARAMARIBO", + "PARANA", + "PARANAGUA", + "PARANAQUE_CITY", + "PARAUAPEBAS", + "PARIS", + "PARNAIBA", + "PARNAMIRIM", + "PASSO_FUNDO", + "PASTO", + "PATAN", + "PATNA", + "PATOS_DE MINAS", + "PAULISTA", + "PECS", + "PEKANBARU", + "PELOTAS", + "PEORIA", + "PEREIRA", + "PERM", + "PERTH", + "PESCARA", + "PESHAWAR", + "PETAH_TIKVA", + "PETALING_JAYA", + "PETROLINA", + "PETROPOLIS", + "PHILADELPHIA", + "PHNOM_PENH", + "PHOENIX", + "PILAR", + "PINDAMONHANGABA", + "PIRACICABA", + "PITESTI", + "PITTSBURGH", + "PIURA", + "PLANO", + "PLOIESTI", + "PLOVDIV", + "PLYMOUTH", + "POCOS_DE CALDAS", + "PODGORICA", + "POLTAVA", + "PONTA_GROSSA", + "PONTIANAK", + "POPAYAN", + "PORT_AU PRINCE", + "PORT_ELIZABETH", + "PORT_HARCOURT", + "PORT_LOUIS", + "PORT_MONTT", + "PORT_OF SPAIN", + "PORT_SAID", + "PORTLAND", + "PORTO", + "PORTO_ALEGRE", + "PORTO_SEGURO", + "PORTO_VELHO", + "PORTOVIEJO", + "POSADAS", + "POUSO_ALEGRE", + "POZNAN", + "PRAGUE", + "PRAIA_GRANDE", + "PRESIDENTE_PRUDENTE", + "PRETORIA", + "PRISTINA", + "PROVIDENCE", + "PUCALLPA", + "PUCHONG_BATU DUA BELAS", + "PUEBLA_CITY", + "PUNE", + "QUEBEC", + "QUEENS", + "QUEIMADOS", + "QUERETARO_CITY", + "QUEZON_CITY", + "QUILMES", + "QUITO", + "RABAT", + "RAIPUR", + "RAJKOT", + "RAJSHAHI", + "RALEIGH", + "RAMAT_GAN", + "RANCAGUA", + "RANCHI", + "RAS_AL KHAIMAH", + "RAWALPINDI", + "READING", + "RECIFE", + "REGINA", + "RENNES", + "RENO", + "RESISTENCIA", + "REYKJAVIK", + "REYNOSA", + "RIBEIRAO_DAS NEVES", + "RIBEIRAO_PRETO", + "RICHMOND", + "RIGA", + "RIO_BRANCO", + "RIO_CLARO", + "RIO_CUARTO", + "RIO_DE JANEIRO", + "RIO_DO SUL", + "RIO_GALLEGOS", + "RIO_GRANDE", + "RISHON_LETSIYYON", + "RIVERSIDE", + "RIYADH", + "RIZE", + "ROCHESTER", + "ROME", + "RONDONOPOLIS", + "ROSARIO", + "ROSEAU", + "ROSTOV_ON DON", + "ROTTERDAM", + "ROUEN", + "ROUSSE", + "RZESZOW", + "SACRAMENTO", + "SAGAR", + "SAINT_PAUL", + "SALE", + "SALT_LAKE CITY", + "SALTA", + "SALTILLO", + "SALVADOR", + "SAMARA", + "SAMARINDA", + "SAMARKAND", + "SAMSUN", + "SAN_ANTONIO", + "SAN_DIEGO", + "SAN_FERNANDO", + "SAN_FRANCISCO", + "SAN_JOSE", + "SAN_JOSE DEL MONTE", + "SAN_JUAN", + "SAN_JUSTO", + "SAN_LUIS", + "SAN_LUIS POTOSI CITY", + "SAN_MIGUEL", + "SAN_MIGUEL DE TUCUMAN", + "SAN_PABLO CITY", + "SAN_PEDRO", + "SAN_PEDRO SULA", + "SAN_SALVADOR", + "SAN_SALVADOR DE JUJUY", + "SANAA", + "SANLIURFA", + "SANTA_CRUZ", + "SANTA_CRUZ DE TENERIFE", + "SANTA_CRUZ DO SUL", + "SANTA_FE", + "SANTA_LUZIA", + "SANTA_MARIA", + "SANTA_MARTA", + "SANTA_ROSA", + "SANTAREM", + "SANTIAGO", + "SANTIAGO_DE CALI", + "SANTIAGO_DE LOS CABALLEROS", + "SANTO_ANDRE", + "SANTO_DOMINGO", + "SANTO_DOMINGO ESTE", + "SANTOS", + "SAO_BERNARDO DO CAMPO", + "SAO_CARLOS", + "SAO_GONCALO", + "SAO_JOAO DE MERITI", + "SAO_JOSE", + "SAO_JOSE DO RIO PRETO", + "SAO_JOSE DOS CAMPOS", + "SAO_JOSE DOS PINHAIS", + "SAO_LEOPOLDO", + "SAO_LUIS", + "SAO_PAULO", + "SAO_VICENTE", + "SARAJEVO", + "SASKATOON", + "SCARBOROUGH", + "SEATTLE", + "SEMARANG", + "SEO_GU", + "SEONGNAM_SI", + "SEOUL", + "SERRA", + "SETE_LAGOAS", + "SETIF", + "SETUBAL", + "SEVILLE", + "SFAX", + "SHAH_ALAM", + "SHANGHAI", + "SHARJAH", + "SHEFFIELD", + "SHENZHEN", + "SHIMLA", + "SIAULIAI", + "SIBIU", + "SIDOARJO", + "SIKAR", + "SILVER_SPRING", + "SINOP", + "SIVAS", + "SKIKDA", + "SKOPJE", + "SLOUGH", + "SOBRAL", + "SOFIA", + "SOROCABA", + "SOUSSE", + "SOUTH_TANGERANG", + "SOUTHAMPTON", + "SOUTHWARK", + "SPLIT", + "SPOKANE", + "SPRING", + "SPRINGFIELD", + "ST_LOUIS", + "ST_PETERSBURG", + "STARA_ZAGORA", + "STATEN_ISLAND", + "STOCKHOLM", + "STOCKTON", + "STOKE_ON TRENT", + "STRASBOURG", + "STUTTGART", + "SUMARE", + "SURABAYA", + "SURAKARTA", + "SURAT", + "SURREY", + "SUWON", + "SUZANO", + "SYDNEY", + "SZCZECIN", + "SZEGED", + "SZEKESFEHERVAR", + "TABOAO_DA SERRA", + "TACNA", + "TACOMA", + "TAGUIG", + "TAICHUNG", + "TAINAN_CITY", + "TAIPEI", + "TALAVERA", + "TALCA", + "TALLAHASSEE", + "TALLINN", + "TAMPA", + "TAMPERE", + "TAMPICO", + "TANGERANG", + "TANGIER", + "TANTA", + "TANZA", + "TAOYUAN_DISTRICT", + "TAPPAHANNOCK", + "TARLAC_CITY", + "TASHKENT", + "TASIKMALAYA", + "TATUI", + "TAUBATE", + "TBILISI", + "TEGUCIGALPA", + "TEHRAN", + "TEIXEIRA_DE FREITAS", + "TEKIRDAG", + "TEL_AVIV", + "TEMUCO", + "TEPIC", + "TERESINA", + "TERNOPIL", + "TERRASSA", + "TETOUAN", + "THANE", + "THE_BRONX", + "THE_HAGUE", + "THESSALONIKI", + "THIRUVANANTHAPURAM", + "THRISSUR", + "TIJUANA", + "TIMISOARA", + "TIRANA", + "TLALNEPANTLA", + "TLAXCALA_CITY", + "TLEMCEN", + "TOKAT_PROVINCE", + "TOKYO", + "TOLUCA", + "TORONTO", + "TORREON", + "TOULOUSE", + "TRABZON", + "TRUJILLO", + "TUBARAO", + "TUCSON", + "TUGUEGARAO_CITY", + "TULSA", + "TUNIS", + "TUNJA", + "TURIN", + "TUXTLA_GUTIERREZ", + "TUZLA", + "UBERABA", + "UBERLANDIA", + "UFA", + "ULAN_BATOR", + "UMEDA", + "URDANETA", + "USAK", + "VADODARA", + "VALENCIA", + "VALINHOS", + "VALLADOLID", + "VALLEDUPAR", + "VALPARAISO", + "VALPARAISO_DE GOIAS", + "VAN", + "VANCOUVER", + "VARANASI", + "VARGINHA", + "VARNA", + "VARZEA_PAULISTA", + "VENUSTIANO_CARRANZA", + "VERACRUZ", + "VERONA", + "VIAMAO", + "VICTORIA", + "VIENNA", + "VIENTIANE", + "VIGO", + "VIJAYAWADA", + "VILA_NOVA DE GAIA", + "VILA_VELHA", + "VILLA_BALLESTER", + "VILLAVICENCIO", + "VILNIUS", + "VINA_DEL MAR", + "VINNYTSIA", + "VIRGINIA_BEACH", + "VISAKHAPATNAM", + "VITORIA", + "VITORIA_DA CONQUISTA", + "VITORIA_DE SANTO ANTAO", + "VOLTA_REDONDA", + "VORONEZH", + "WARSAW", + "WASHINGTON", + "WELLINGTON", + "WEST_PALM BEACH", + "WICHITA", + "WILLEMSTAD", + "WILMINGTON", + "WINDHOEK", + "WINDSOR", + "WINNIPEG", + "WOLVERHAMPTON", + "WOODBRIDGE", + "WROCLAW", + "WUPPERTAL", + "XALAPA", + "YALOVA", + "YANGON", + "YEKATERINBURG", + "YEREVAN", + "YOGYAKARTA", + "YOKOHAMA", + "YONGIN_SI", + "ZABRZE", + "ZAGAZIG", + "ZAGREB", + "ZAMBOANGA_CITY", + "ZAPOPAN", + "ZAPORIZHZHYA", + "ZARAGOZA", + "ZHONGLI_DISTRICT", + "ZIELONA_GORA", + "ZONGULDAK", + "ZURICH", + ] + """City name (e.g., 'NEW_YORK', 'LOS_ANGELES')""" + + state: Literal[ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "FL", + "GA", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VA", + "WA", + "WV", + "WI", + "WY", + "DC", + "PR", + "GU", + "VI", + ] + """State code (e.g., 'NY', 'CA') - US states only""" + + +class UseProxyGeolocation(TypedDict, total=False): + geolocation: Required[UseProxyGeolocationGeolocation] + """Geographic location for the proxy""" + + +class UseProxyServer(TypedDict, total=False): + server: Required[str] + """Proxy server URL""" + + +UseProxy: TypeAlias = Union[bool, UseProxyGeolocation, UseProxyServer, object] diff --git a/src/steel/types/sessionslist.py b/src/steel/types/sessionslist.py index 3198e8a3..b7514620 100644 --- a/src/steel/types/sessionslist.py +++ b/src/steel/types/sessionslist.py @@ -8,7 +8,7 @@ from .._models import BaseModel -__all__ = ["Sessionslist", "Session", "SessionDimensions"] +__all__ = ["Sessionslist", "Session", "SessionDimensions", "SessionStealthConfig"] class SessionDimensions(BaseModel): @@ -19,6 +19,17 @@ class SessionDimensions(BaseModel): """Width of the browser window""" +class SessionStealthConfig(BaseModel): + humanize_interactions: Optional[bool] = FieldInfo(alias="humanizeInteractions", default=None) + """ + This flag will make the browser act more human-like by moving the mouse in a + more natural way + """ + + skip_fingerprint_injection: Optional[bool] = FieldInfo(alias="skipFingerprintInjection", default=None) + """This flag will skip the fingerprint generation for the session.""" + + class Session(BaseModel): id: str """Unique identifier for the session""" @@ -44,6 +55,9 @@ class Session(BaseModel): proxy_bytes_used: int = FieldInfo(alias="proxyBytesUsed") """Amount of data transmitted through the proxy""" + proxy_source: Optional[Literal["steel", "external"]] = FieldInfo(alias="proxySource", default=None) + """Source of the proxy used for the session""" + session_viewer_url: str = FieldInfo(alias="sessionViewerUrl") """URL to view session details""" @@ -59,15 +73,15 @@ class Session(BaseModel): is_selenium: Optional[bool] = FieldInfo(alias="isSelenium", default=None) """Indicates if Selenium is used in the session""" - proxy: Optional[str] = None - """Proxy server used for the session""" - region: Optional[Literal["lax", "ord", "iad", "bom", "scl", "fra", "hkg"]] = None """The region where the session was created""" solve_captcha: Optional[bool] = FieldInfo(alias="solveCaptcha", default=None) """Indicates if captcha solving is enabled""" + stealth_config: Optional[SessionStealthConfig] = FieldInfo(alias="stealthConfig", default=None) + """Stealth configuration for the session""" + user_agent: Optional[str] = FieldInfo(alias="userAgent", default=None) """User agent string used in the session""" diff --git a/tests/api_resources/test_sessions.py b/tests/api_resources/test_sessions.py index 00c54595..b28d4e76 100644 --- a/tests/api_resources/test_sessions.py +++ b/tests/api_resources/test_sessions.py @@ -109,6 +109,10 @@ def test_method_create_with_all_params(self, client: Steel) -> None: }, session_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", solve_captcha=True, + stealth_config={ + "humanize_interactions": True, + "skip_fingerprint_injection": True, + }, api_timeout=0, use_proxy=True, user_agent="userAgent", @@ -472,6 +476,10 @@ async def test_method_create_with_all_params(self, async_client: AsyncSteel) -> }, session_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", solve_captcha=True, + stealth_config={ + "humanize_interactions": True, + "skip_fingerprint_injection": True, + }, api_timeout=0, use_proxy=True, user_agent="userAgent",