github 작업의 HTTP 응답에 빈 응답 본문

Ashawe

http 요청을에 전송해야하는 github 작업을 만들려고합니다 https://www.instagram.com/<username>/?__a=1.

로컬에서 실행할 때 완벽하게 잘 실행되고 팔로워 수를 제공합니다.

하지만 github 작업에서 사용할 때 응답이 null이므로 JSON 문자열을 구문 분석 할 수 없습니다.

다음은 github 작업 파일 https://github.com/ashawe/actions-check/blob/e80ca115544979cdb3180207b99c7724e4446849/index.js에 대한 링크입니다.

팔로어를 얻는 코드는 다음과 같습니다 (# 94에서 시작)

promiseArray.push(new Promise((resolve, reject) => {
    const url = 'https://www.instagram.com/' + INSTAGRAM_USERNAME + '/?__a=1';
    core.info("url is");
    core.info(url);
    http.get(url, (response) => {
        let chunks_of_data = [];
        response.on('data', (fragments) => {
            chunks_of_data.push(fragments);
        });

        response.on('end', () => {
            let response_body = Buffer.concat(chunks_of_data);
            core.info(response_body.toString());
            let responseJSON = JSON.parse(response_body.toString());
            resolve((responseJSON.graphql.user.edge_followed_by.count).toString());
        });

        response.on('error', (error) => {
            reject(error);
        });
    });
}));

그런 다음 다음과 같이 처리하고 있습니다.

Promise.allSettled(promiseArray).then((results) => {
    results.forEach((result, index) => {
        if (result.status === 'fulfilled') {
            // Succeeded
            //   core.info(runnerNameArray[index] + ' runner succeeded. Post count: ' + result.value.length);
            // postsArray.push(result.value);
            instagram_followers = result.value;
        } else {
            jobFailFlag = true;
            // Rejected
            //core.error(runnerNameArray[index] + ' runner failed, please verify the configuration. Error:');
            core.error(result.reason);
        }
    });
}).finally(() => {
    try {
        const followers = instagram_followers;
        const readmeData = fs.readFileSync(README_FILE_PATH, 'utf8');
        // core.info(readmeData);
        const shieldURL = "https://img.shields.io/badge/ %40 " + INSTAGRAM_USERNAME + "-" + followers + "-%23E4405F?style=for-the-badge&logo=instagram";
        const instagramBadge = "<img align='left' alt='instagram-followers' src='" + shieldURL + "' />";
        const newReadme = buildReadme(readmeData, instagramBadge);
        // core.info(newReadme);
        // if there's change in readme file update it
        if (newReadme !== readmeData) {
            core.info('Writing to ' + README_FILE_PATH);
            fs.writeFileSync(README_FILE_PATH, newReadme);
            if (!process.env.TEST_MODE) {
                // noinspection JSIgnoredPromiseFromCall
                commitReadme();
            }
        } else {
            core.info('No change detected, skipping');
            process.exit(0);
        }
    } catch (e) {
        core.error(e);
        process.exit(1);
    }
});

그러나 액션을 실행하면 다음 오류가 발생합니다. 여기에 이미지 설명 입력

이는 response_body가 완전한 JSON 응답이 아니지만 https://www.instagram.com/USERNAME/?__a=1에 대한 요청 이 json 응답을 전송 함을 의미합니다 .

에드워드 로메로

최신 정보

기본적으로 해당 엔드 포인트에 도달 할 때마다 로그인 html 페이지가 반환되어 json 구문 분석이 실패합니다. 사용자로부터 정보를 얻기 전에 인증이 필요한 API를 사용해야 할 수 있습니다. 또는 다른 스크래핑 방법론을 알아 내십시오.

VPN 및 개인 브라우저로 이동하여 로컬 PC에서이 오류를 재현 할 수있었습니다. 엔드 포인트에 도달했을 때 로그인 화면으로 이동했습니다. 그리고 터미널에서 컬을 통해 끝점에 도달했을 때 아무것도 반환하지 않았습니다. 그러나 내가 VPN을 해제했을 때 모든 것이 잘 작동했습니다. 로컬에서 작동하는 이유는 브라우저에서 캐싱이 일어나고 VPN이 아니라고 생각하기 때문이라고 생각합니다. VPN에서 네트워크 블랙리스트가 발생한다고 생각합니다. 나는 github 호스팅 네트워크를 모르기 때문에 그것에 대해 더 알고 싶다면 그들과 함께 티켓을 여는 것이 좋습니다.

다음은 빠른 참조를위한 Instagram API 문서입니다. https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

미리보기 응답 : 다른 사용자가 나중에 참조 할 수 있도록 여기에 남겨 둡니다.

사용자 이름을 전달하지 않아 사용자 이름이 비어있는 엔드 포인트를 쿼리하려고합니다.

작업에서 index.js 노드 만 실행하는 대신 작업을 호출하고 필요한 매개 변수를 제공해야합니다.

  - name: Your github action
    uses: ./ # Uses an action in the root directory
    with:
      username: '_meroware'
   

그러면 코드가 올바르게 선택합니다.

  const INSTAGRAM_USERNAME = core.getInput('username');
  const url = 'https://www.instagram.com/' + INSTAGRAM_USERNAME + '/?__a=1';

리소스 : https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CapserJS에서 http 응답 본문 조작

분류에서Dev

응답 본문에 쓸 때 빈 헤더 및 응답 본문

분류에서Dev

Content-Length 0 및 응답 302가있는 Meteor HTTP 빈 본문

분류에서Dev

XMLHttpRequest의 빈 응답

분류에서Dev

백본-서버의 빈 응답 처리

분류에서Dev

Play 2.5 : 사용자 지정 http 작업에서 응답 본문 가져 오기

분류에서Dev

필터에서 http 응답의 본문을 변경하는 방법

분류에서Dev

Facebook Graph의 빈 응답

분류에서Dev

Android-http 응답의 문자 크기

분류에서Dev

PHP에서 HTTP 웹 서비스 (JSON)의 응답 구문 분석

분류에서Dev

활동의 HTTP 응답 문자열에 액세스

분류에서Dev

Angular JS의 HTTP Get 요청이 빈 응답을받습니다.

분류에서Dev

반응이있는 API의 빈 응답

분류에서Dev

Ruby에서 http 응답 구문 분석

분류에서Dev

HTTP 응답에서 JSON 구문 분석

분류에서Dev

Eventmachine의 HTTP 요청에 응답

분류에서Dev

PHP 5.4의 HTTP 응답

분류에서Dev

http 응답의 AngularJS 주입

분류에서Dev

CQRS의 HTTP REST 응답

분류에서Dev

Laravel의 설치 문제-cURL 오류 52 : 서버의 빈 응답

분류에서Dev

텍스트에 대한 빈 JSON Http 응답

분류에서Dev

netcat을 사용한 HTTP 요청에 대한 빈 응답

분류에서Dev

이 http 요청에서 빈 응답을받는 이유

분류에서Dev

Facebook Ads API에 대한 POST 요청이있는 빈 응답 본문

분류에서Dev

Ajax 요청이있는 빈 응답 본문

분류에서Dev

빈 응답 본문을 제공하는 PHP cURL

분류에서Dev

Angular 8의 http 응답에서 응답 헤더를 볼 수 없습니다.

분류에서Dev

Spring 반응 형 앱의 요청 / 응답 본문 사본?

분류에서Dev

응답 본문에 Facebook PHP-sdk 작성

Related 관련 기사

뜨겁다태그

보관